Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-pascal / 2007-02

Pascal is alive!!??

25 messages · 9 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Unknown author

In the ACM-ICPC International Collegiate Programming Contest dropped pascal for this year final competitions and for next year, the students are not allowed to use pascal as their programming language. Did you know this? What is your idea? Also, in TopCoder site, you can not develop your programs with Pascal while as I know, Pascal has all the properties that C++ or JAVA have.

Any idea? Is there any technical problem with Pascal to be used in TopCoder's contest?

Daniël Mantione
to Unknown author

Op Tue, 20 Feb 2007, schreef

Show quoted text 8 lines
In the ACM-ICPC International Collegiate Programming Contest dropped pascal for this year final competitions and for next year, the students are not allowed to use pascal as their programming language. Did you know this? What is your idea? Also, in TopCoder site, you can not develop your programs with Pascal while as I know, Pascal has all the properties that C++ or JAVA have. Any idea? Is there any technical problem with Pascal to be used in TopCoder's contest?

I saw this coming for a few years. Free Pascal has most definately been able to delay this for a few years, it was the de facto standard in competitions in recent years. But the trend was there. When I participated myself the amount of people using Pascal was in decline, usually in the end it were two teams of 50 or so who used Pascal.

Note that only the *requirement* to offer a Pascal environment has been scrapped, organisers of contests can still provide it if they want. So, please lobby at the contest organisation for a Pascal environment.

The only fix here is to strengthen our position in education. Most people today participate in Java, which is silly as it puts you in a clear disadvantage. I once submitted the first non-Java implementation of a problem after an hour into the contest. The reference implementation of the jury took 10 minutes and 60 MB of memory. My Pascal implementation gave the result instantly, while using 300 kilobytes of memory. The jury was totally blown away; after the contest we did investigate and it turned out that Pascal text I/O versus Java text I/O was 100% responsible for the difference.

In short, Pascal still rocks in contests. One thing is very important: a rock solid text mode IDE under both Windows and Linux. This makes a difference in a contest. FPC has never been able to live up to the Turbo Pascal level here. I'd say especially the IDE in Linux was only useable for people knowledged with FPC to work around the limitations.

Perhaps we should ask Tom Verhoeff, he is very involved in the icpc's.

Daniël

Unknown author
to Daniël Mantione

What about Topcoder's and its Arena?

Daniël Mantione wrote 42 lines
Op Tue, 20 Feb 2007, schreef > In the ACM-ICPC International Collegiate Programming Contest dropped pascal > for this year final competitions and for next year, the students are not > allowed to use pascal as their programming language. Did you know this? What > is your idea? Also, in TopCoder site, you can not develop your programs with > Pascal while as I know, Pascal has all the properties that C++ or JAVA have. > > Any idea? Is there any technical problem with Pascal to be used in TopCoder's > contest? > I saw this coming for a few years. Free Pascal has most definately been able to delay this for a few years, it was the de facto standard in competitions in recent years. But the trend was there. When I participated myself the amount of people using Pascal was in decline, usually in the end it were two teams of 50 or so who used Pascal. Note that only the *requirement* to offer a Pascal environment has been scrapped, organisers of contests can still provide it if they want. So, please lobby at the contest organisation for a Pascal environment. The only fix here is to strengthen our position in education. Most people today participate in Java, which is silly as it puts you in a clear disadvantage. I once submitted the first non-Java implementation of a problem after an hour into the contest. The reference implementation of the jury took 10 minutes and 60 MB of memory. My Pascal implementation gave the result instantly, while using 300 kilobytes of memory. The jury was totally blown away; after the contest we did investigate and it turned out that Pascal text I/O versus Java text I/O was 100% responsible for the difference. In short, Pascal still rocks in contests. One thing is very important: a rock solid text mode IDE under both Windows and Linux. This makes a difference in a contest. FPC has never been able to live up to the Turbo Pascal level here. I'd say especially the IDE in Linux was only useable for people knowledged with FPC to work around the limitations. Perhaps we should ask Tom Verhoeff, he is very involved in the icpc's. Daniël
Krishna
to Daniël Mantione: Op Tue, 20 Feb 2007, schreef I saw this coming for a few years. Free Pascal has most…
Daniël Mantione wrote 13 lines
Op Tue, 20 Feb 2007, schreef > In the ACM-ICPC International Collegiate Programming Contest dropped pascal > for this year final competitions and for next year, the students are not > allowed to use pascal as their programming language. Did you know this? What > is your idea? Also, in TopCoder site, you can not develop your programs with > Pascal while as I know, Pascal has all the properties that C++ or JAVA have. > > Any idea? Is there any technical problem with Pascal to be used in TopCoder's > contest?

This is sad because Object Pascal is a nice language and fpc is a great compiler. Most C programs can be translated without too much trouble. And ofcourse, things like strings are so easy.

In short, Pascal still rocks in contests. One thing is very important: a rock solid text mode IDE under both Windows and Linux. This makes a difference in a contest. FPC has never been able to live up to the Turbo Pascal level here.

Editors like (g)Vim and (X)Emacs can be easily customized to invoke the compiler. With fpc, you don't need a makefile as the compiler is so fast. So, all is required is a keybinding to fire up the compiler.

I'd say especially the IDE in Linux was only useable for people knowledged with FPC to work around the limitations.

If you are talking about the debugger, then I guess you have a point but with Object Pascal, the need for requiring the services of a debugger is much less say when using C or C++. But then, Emacs comes with an interface to gdb and its delphi-mode is good too.

Cheers,
Krishna

We will never run out of things to program as long as there is a single program around. - Alan Perlis
Unknown author
to Daniël Mantione: Op Tue, 20 Feb 2007, schreef I saw this coming for a few years. Free Pascal has most…
Note that only the *requirement* to offer a Pascal environment has been scrapped, organisers of contests can still provide it if they want. So, please lobby at the contest organisation for a Pascal environment.

I did lobby them since the first time they had intention to drop pascal, but they simply didn't listen to me. :P The regular online contest still allows pascal though, they just don't want to see pascal on the final stage. Another thing that made me disappointed is they still use the old FPC v.1.0.6! They didn't care even when I told them to upgrade to FPC v.2.0.2 (the last version available at the time). :(

Show quoted text 9 lines
The only fix here is to strengthen our position in education. Most people today participate in Java, which is silly as it puts you in a clear disadvantage. I once submitted the first non-Java implementation of a problem after an hour into the contest. The reference implementation of the jury took 10 minutes and 60 MB of memory. My Pascal implementation gave the result instantly, while using 300 kilobytes of memory. The jury was totally blown away; after the contest we did investigate and it turned out that Pascal text I/O versus Java text I/O was 100% responsible for the difference.

Absolutely correct! The funny thing is, most of top rank solutions are done using C or C++. Very little of them is using Java, but still they insist to allow Java! Pascal didn't do as much as C or C++ (yet) just because pascal isn't very popular in their community. But if we want to involve ourselves in, I believe pascal is able to beat C or C++, as some of my friends (from Indonesia) did it.

Show quoted text 5 lines
In short, Pascal still rocks in contests. One thing is very important: a rock solid text mode IDE under both Windows and Linux. This makes a difference in a contest. FPC has never been able to live up to the Turbo Pascal level here. I'd say especially the IDE in Linux was only useable for people knowledged with FPC to work around the limitations.

FPC text mode IDE is indeed very good and easy to use for common programming purposes, both on win32 console and linux terminal. I use it all the time when I code on remote servers. Of source you can't expect it to be as complete as or as easy as GUI IDE like Lazarus since it works on text mode, but it does the best thing it could for a text based IDE.

-Bee-

has Bee.ography at:
http://beeography.wordpres.com

Daniël Mantione
to Unknown author

Op Tue, 20 Feb 2007, schreef

Show quoted text 10 lines
> Note that only the *requirement* to offer a Pascal environment has been > scrapped, organisers of contests can still provide it if they want. So, > please lobby at the contest organisation for a Pascal environment. I did lobby them since the first time they had intention to drop pascal, but they simply didn't listen to me. :P The regular online contest still allows pascal though, they just don't want to see pascal on the final stage. Another thing that made me disappointed is they still use the old FPC v.1.0.6! They didn't care even when I told them to upgrade to FPC v.2.0.2 (the last version available at the time). :(

Well, I still have many contacts in the ICPC world. It can still use them, but I need backup, since I already lobbied hard in the past. So please continue the lobby. Each year, also for the finals, each contest orginaising comittee decides what languages to offer. So, each year is a new opportinity to convince people to offer Pascal.

Show quoted text 16 lines
> The only fix here is to strengthen our position in education. Most people > today participate in Java, which is silly as it puts you in a clear > disadvantage. I once submitted the first non-Java implementation of a > problem after an hour into the contest. The reference implementation of > the jury took 10 minutes and 60 MB of memory. My Pascal implementation > gave the result instantly, while using 300 kilobytes of memory. The jury > was totally blown away; after the contest we did investigate and it > turned out that Pascal text I/O versus Java text I/O was 100% responsible > for the difference. Absolutely correct! The funny thing is, most of top rank solutions are done using C or C++. Very little of them is using Java, but still they insist to allow Java! Pascal didn't do as much as C or C++ (yet) just because pascal isn't very popular in their community. But if we want to involve ourselves in, I believe pascal is able to beat C or C++, as some of my friends (from Indonesia) did it.

Yes, Pascal perfectly suitable for contest, and due to lower LOC counts preferable over C++. A problem is the STL though, C++ coders can sometimes take shortcuts here; while juries somehow seem tempted to forbid the use of units in Pascal (an issue I made myself angry about many times in the past).

Show quoted text 11 lines
> In short, Pascal still rocks in contests. One thing is very important: a > rock solid text mode IDE under both Windows and Linux. This makes a > difference in a contest. FPC has never been able to live up to the Turbo > Pascal level here. I'd say especially the IDE in Linux was only useable > for people knowledged with FPC to work around the limitations. FPC text mode IDE is indeed very good and easy to use for common programming purposes, both on win32 console and linux terminal. I use it all the time when I code on remote servers. Of source you can't expect it to be as complete as or as easy as GUI IDE like Lazarus since it works on text mode, but it does the best thing it could for a text based IDE.

In the past, Turbo Pascal gave people the biggest advantage, since you develop and debug your program a lot faster than with gcc or Java. FPC has never given these benefits. I've used the FPC IDE in the past, but it always working around the limitations of FPC IDE in xterm. Debugging with gdb wasn't worse than using the FPC IDE. This affects the decisions for teams what language to use.

Lazarus, with all its RAD stuff, is terribly in the way. I have done two contests with Delphi as IDE, and while it works very well, for this kind of development an IDE that is focussed just code really helps. Further, few contest organizers have been installing Delphi in the past, but many installed the text mode IDE, so this is to focus on.

Daniël

Unknown author
to Daniël Mantione
Show quoted text 5 lines
Well, I still have many contacts in the ICPC world. It can still use them, but I need backup, since I already lobbied hard in the past. So please continue the lobby. Each year, also for the finals, each contest orginaising comittee decides what languages to offer. So, each year is a new opportinity to convince people to offer Pascal.

I'll try but can't promise you the result as I think those people -mostly- underestimate pascal. You know, very C/C++ programmers typical. They just simply ignore what pascal can do nowadays. :P

Show quoted text 5 lines
Yes, Pascal perfectly suitable for contest, and due to lower LOC counts preferable over C++. A problem is the STL though, C++ coders can sometimes take shortcuts here; while juries somehow seem tempted to forbid the use of units in Pascal (an issue I made myself angry about many times in the past).

Agree. I think they should allow common/standard modern pascal units, such as sysutils and classes. Without them, we almost need to rewrite all usable classes and functions/procedures by ourselves.

Show quoted text 6 lines
In the past, Turbo Pascal gave people the biggest advantage, since you develop and debug your program a lot faster than with gcc or Java. FPC has never given these benefits. I've used the FPC IDE in the past, but it always working around the limitations of FPC IDE in xterm. Debugging with gdb wasn't worse than using the FPC IDE. This affects the decisions for teams what language to use.

Ah, the debugger! You have a point here. I forgot to mention it because I rarely use it. :D

Show quoted text 5 lines
Lazarus, with all its RAD stuff, is terribly in the way. I have done two contests with Delphi as IDE, and while it works very well, for this kind of development an IDE that is focussed just code really helps. Further, few contest organizers have been installing Delphi in the past, but many installed the text mode IDE, so this is to focus on.

Just forget the GUI IDE, programming contests don't need a bloated hard to configure IDE. No offense for Lazarus. But IMO a GUI IDE is just overkill for algorithm/logic programming purposes. A fully working text mode IDE is more than enough.

-Bee-

has Bee.ography at:
http://beeography.wordpress.com

Unknown author
In the ACM-ICPC International Collegiate Programming Contest dropped pascal

for

this year final competitions and for next year, the students are not

allowed to

use pascal as their programming language. Did you know this? What is your

idea?

Show quoted text 5 lines
Also, in TopCoder site, you can not develop your programs with Pascal while as I know, Pascal has all the properties that C++ or JAVA have. Any idea? Is there any technical problem with Pascal to be used in TopCoder's contest?

Now I'm in a contest that uses Pascal. Most of people uses Delphi but some of us use FPC:
http://www.pascalgamedevelopment.com/competitions.php?p=details&c=3

Last year I participated in another contest where the language prerequisite was "any language that supports the Allegro library". I used Free Pascal.

Guillermo "Ñuño" Martínez

Tom Verhoeff
to Daniël Mantione: Op Tue, 20 Feb 2007, schreef I saw this coming for a few years. Free Pascal has most…
Daniël Mantione wrote 17 lines
Op Tue, 20 Feb 2007, schreef > In the ACM-ICPC International Collegiate Programming Contest dropped pascal > for this year final competitions and for next year, the students are not > allowed to use pascal as their programming language. Did you know this? What > is your idea? Also, in TopCoder site, you can not develop your programs with > Pascal while as I know, Pascal has all the properties that C++ or JAVA have. > > Any idea? Is there any technical problem with Pascal to be used in TopCoder's > contest? I saw this coming for a few years. Free Pascal has most definately been able to delay this for a few years, it was the de facto standard in competitions in recent years. But the trend was there. When I participated myself the amount of people using Pascal was in decline, usually in the end it were two teams of 50 or so who used Pascal.

I have been ICPC "Super Regional Director" for Europe for a number of years around the year 2000 (in 1999 we hosted the World Finals in Eindhoven). As a member of the ICPC Steering Committee I have always lobbied for Pascal. (But I must say that I have never been able to fully grasp the operation of this Steering Committee.)

Note that only the *requirement* to offer a Pascal environment has been scrapped, organisers of contests can still provide it if they want. So, please lobby at the contest organisation for a Pascal environment.

This is very true. What is also very important, practically, is having Pascal supporters and experts on the "jury" (both of Regional Contests and the World Finals).

The only fix here is to strengthen our position in education. Most people today participate in Java, which is silly as it puts you in a clear disadvantage. ...

Again, very true. But this will not be easy (discussion should continue in another thread)...

Show quoted text 5 lines
In short, Pascal still rocks in contests. One thing is very important: a rock solid text mode IDE under both Windows and Linux. This makes a difference in a contest. FPC has never been able to live up to the Turbo Pascal level here. I'd say especially the IDE in Linux was only useable for people knowledged with FPC to work around the limitations.

Once again, a sore point, indeed. The IDE is an issue, especially for "beginners". Personally, I have been very happy to use vi(m) under contest conditions.

Perhaps we should ask Tom Verhoeff, he is very involved in the icpc's.

Tom used to be very involved. I had to make a choice, and after the World Finals in 1999, I decided to focus on the International Olympiad in Informatics (IOI: for high school students). I am no longer in the ICPC Steering Committee, though I have been on the jury of the North-West European Regional Contest in 2005 and 2006.

In the IOI, Pascal is still a "major" language. Demand comes especially from Central and Eastern Europe, and parts of Asia. The IOI has stayed away from Java, mainly for technical reasons, but this is creating more and more problems. Algorithms/programming education around the world seems to have fallen for Java, both for high school and for the bachelor , up-to-date, teaching material for Object Pascal is lacking.

Oh, and before I forget: C++ has STL, and Java comes with numerous packages. These are very powerful tools in the hands of skilled programmers. FPC does have FCL, but (a) it is not well-known, (b) it is not sufficiently complete.

To round this off: we are overhauling our CS curriculum, and fortunately there is a small core of Pascal supporters. Personally, I favor FPC/Lazarus, some others still believe in Delphi. Maybe we will produce some new Pascal material that could find wider usage. (Food for another thread.)

To summarize the needs:

* Tools: contest-friendly IDE; STL-like library
* Teaching: Course material, tutorials (make Pascal a wanted language)
* People: Supportive jury members

It would be nice to have some (former) contestants contribute to FPC to make it a compelling contest language.

Tom

E-MAIL: T.Verhoeff @ TUE.NL | Fac. of Math. & Computing Science PHONE: +31 40 247 41 25 | Eindhoven University of Technology FAX: +31 40 247 54 04 | PO Box 513, NL-5600 MB Eindhoven http://www.win.tue.nl/~wstomv/ | The Netherlands
Michael Van Canneyt
to Tom Verhoeff
Tom Verhoeff wrote 10 lines
To round this off: we are overhauling our CS curriculum, and fortunately there is a small core of Pascal supporters. Personally, I favor FPC/Lazarus, some others still believe in Delphi. Maybe we will produce some new Pascal material that could find wider usage. (Food for another thread.) To summarize the needs: * Tools: contest-friendly IDE; STL-like library

What do you need from STL ? What is lacking ?

I program daily and, disregarding GUI classes, all classes I ever needed are in the FCL.

So please elaborate. You can assume (correctly) that I don't know anything about the STL other than that it's a "standard template library". (which - to me - sounds like something an offset-printer would use ;) )

So a list of classes and what they are supposed to do would be nice.

Michael.

Florian Klaempfl
to Michael Van Canneyt
Show quoted text 12 lines
> * Tools: contest-friendly IDE; STL-like library What do you need from STL ? What is lacking ? I program daily and, disregarding GUI classes, all classes I ever needed are in the FCL. So please elaborate. You can assume (correctly) that I don't know anything about the STL other than that it's a "standard template library". (which - to me - sounds like something an offset-printer would use ;) ) So a list of classes and what they are supposed to do would be nice.

http://www.sgi.com/tech/stl/

Something we want to do with the fgl.

The design of the stl shows that genius and madness are usually closely related ;)

Show quoted text 5 lines
Michael. _______________________________________________ fpc-pascal maillist - http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Daniël Mantione
to Michael Van Canneyt: What do you need from STL ? What is lacking ? I program daily and, disregarding GUI…

Op Sun, 25 Feb 2007, schreef Michael Van Canneyt:

Show quoted text 23 lines
On Sun, 25 Feb 2007, Tom Verhoeff wrote: > > To round this off: we are overhauling our CS curriculum, and fortunately > there is a small core of Pascal supporters. Personally, I favor > FPC/Lazarus, some others still believe in Delphi. Maybe we will > produce some new Pascal material that could find wider usage. (Food > for another thread.) > > To summarize the needs: > > * Tools: contest-friendly IDE; STL-like library What do you need from STL ? What is lacking ? I program daily and, disregarding GUI classes, all classes I ever needed are in the FCL. So please elaborate. You can assume (correctly) that I don't know anything about the STL other than that it's a "standard template library". (which - to me - sounds like something an offset-printer would use ;) ) So a list of classes and what they are supposed to do would be nice.

It is not that the FCL is lacking, the STL simply allows template programming, i.e. you can simply declar a linked list of a random object and use a for loop to iterate over them. Now the FCL certainly has a linked list, but is a different way of programming: declaring inherited classes, calling the foreach method to call helpers, etc...

Perhaps the fgl will satisfy Tom's needs, but I'm a bit sceptical. The FCL is there, you are just not allowed to use it in contests...

Daniël

Michael Van Canneyt
to Daniël Mantione
Daniël Mantione wrote 31 lines
Op Sun, 25 Feb 2007, schreef Michael Van Canneyt: > On Sun, 25 Feb 2007, Tom Verhoeff wrote: > > > > > To round this off: we are overhauling our CS curriculum, and fortunately > > there is a small core of Pascal supporters. Personally, I favor > > FPC/Lazarus, some others still believe in Delphi. Maybe we will > > produce some new Pascal material that could find wider usage. (Food > > for another thread.) > > > > To summarize the needs: > > > > * Tools: contest-friendly IDE; STL-like library > > What do you need from STL ? What is lacking ? > > I program daily and, disregarding GUI classes, all classes I ever needed are > in the FCL. > > So please elaborate. You can assume (correctly) that I don't know anything > about the STL other than that it's a "standard template library". > (which - to me - sounds like something an offset-printer would use ;) ) > > So a list of classes and what they are supposed to do would be nice. It is not that the FCL is lacking, the STL simply allows template programming, i.e. you can simply declar a linked list of a random object and use a for loop to iterate over them.

You can do this with a standard list. The only thing you must do extra is a typecast... I fail to see the gain.

Now the FCL certainly has a linked list, but is a different way of programming: declaring inherited classes, calling the foreach method to call helpers, etc...

Well, what stops us from adding such a singly linked list ? I've proposed it several times now. No one does it.

To my ears that sounds as 'not really needed', so...

Perhaps the fgl will satisfy Tom's needs, but I'm a bit sceptical. The FCL is there, you are just not allowed to use it in contests...

By the same reasoning, a C++ programmer should not be allowed to use the STL, or a C user the C library. That's simply ridiculous. You use the tools that come with your compiler...

Michael.

Michael Van Canneyt
to Florian Klaempfl: http://www.sgi.com/tech/stl/ Something we want to do with the fgl. The design of the stl…
Florian Klaempfl wrote 16 lines
Michael Van Canneyt schrieb: > > * Tools: contest-friendly IDE; STL-like library > > What do you need from STL ? What is lacking ? > I program daily and, disregarding GUI classes, all classes I ever needed are > in the FCL. > > So please elaborate. You can assume (correctly) that I don't know anything > about the STL other than that it's a "standard template library". (which - > to me - sounds like something an offset-printer would use ;) ) > > So a list of classes and what they are supposed to do would be nice. http://www.sgi.com/tech/stl/ Something we want to do with the fgl.

Good luck :-)

The design of the stl shows that genius and madness are usually closely related ;)

To be honest, I've seen very little of what I need during daily programming, so I don't see what the fuss is all about. But that's probably just me, seeing that STL is widespread...

Michael.

Daniël Mantione
to Tom Verhoeff: I have been ICPC "Super Regional Director" for Europe for a number of years around the…

Op Sun, 25 Feb 2007, schreef Tom Verhoeff:

Show quoted text 49 lines
On Tue, Feb 20, 2007 at 02:00:27PM +0100, Daniël Mantione wrote: > > Op Tue, 20 Feb 2007, schreef > > > In the ACM-ICPC International Collegiate Programming Contest dropped pascal > > for this year final competitions and for next year, the students are not > > allowed to use pascal as their programming language. Did you know this? What > > is your idea? Also, in TopCoder site, you can not develop your programs with > > Pascal while as I know, Pascal has all the properties that C++ or JAVA have. > > > > Any idea? Is there any technical problem with Pascal to be used in TopCoder's > > contest? > > I saw this coming for a few years. Free Pascal has most definately been > able to delay this for a few years, it was the de facto standard in > competitions in recent years. But the trend was there. When I > participated myself the amount of people using Pascal was in decline, > usually in the end it were two teams of 50 or so who used Pascal. I have been ICPC "Super Regional Director" for Europe for a number of years around the year 2000 (in 1999 we hosted the World Finals in Eindhoven). As a member of the ICPC Steering Committee I have always lobbied for Pascal. (But I must say that I have never been able to fully grasp the operation of this Steering Committee.) > Note that only the *requirement* to offer a Pascal environment has been > scrapped, organisers of contests can still provide it if they want. So, > please lobby at the contest organisation for a Pascal environment. This is very true. What is also very important, practically, is having Pascal supporters and experts on the "jury" (both of Regional Contests and the World Finals). > The only fix here is to strengthen our position in education. Most people > today participate in Java, which is silly as it puts you in a clear > disadvantage. ... Again, very true. But this will not be easy (discussion should continue in another thread)... > In short, Pascal still rocks in contests. One thing is very important: > a rock solid text mode IDE under both Windows and Linux. This makes a > difference in a contest. FPC has never been able to live up to the Turbo > Pascal level here. I'd say especially the IDE in Linux was only useable > for people knowledged with FPC to work around the limitations. Once again, a sore point, indeed. The IDE is an issue, especially for "beginners". Personally, I have been very happy to use vi(m) under contest conditions.

Indeed, but we need to make it so that the decision IDE versus Vi should be a no-brainer. Back in the Dos days this was the case. This is something we still need to work and improve uppon.

Show quoted text 14 lines
> Perhaps we should ask Tom Verhoeff, he is very involved in the icpc's. Tom used to be very involved. I had to make a choice, and after the World Finals in 1999, I decided to focus on the International Olympiad in Informatics (IOI: for high school students). I am no longer in the ICPC Steering Committee, though I have been on the jury of the North-West European Regional Contest in 2005 and 2006. In the IOI, Pascal is still a "major" language. Demand comes especially from Central and Eastern Europe, and parts of Asia. The IOI has stayed away from Java, mainly for technical reasons, but this is creating more and more problems. Algorithms/programming education around the world seems to have fallen for Java, both for high school and for the bachelor to hear that. Do you see any problems coming on the Pascal side?

We might be limited in our options on the political side, but on the technical side we might be able to remove a few arguments out of the hands of Java advocates.

Good, up-to-date, teaching material for Object Pascal is lacking.

I'm aware of it. The Hungarian book (www.computerbooks.hu/FreePascal) seems to be good teaching material. More material like this could give Pascal a good boost.

Oh, and before I forget: C++ has STL, and Java comes with numerous packages. These are very powerful tools in the hands of skilled programmers. FPC does have FCL, but (a) it is not well-known, (b) it is not sufficiently complete.

b) Can be solved in the short term if desired. a) is a more long term problem. Certainly, there are good Delphi books out there, but Delphi books seldomly are algorithm oriented :/

Show quoted text 5 lines
To round this off: we are overhauling our CS curriculum, and fortunately there is a small core of Pascal supporters. Personally, I favor FPC/Lazarus, some others still believe in Delphi. Maybe we will produce some new Pascal material that could find wider usage. (Food for another thread.)

I don't mind loosing to Delphi; after all everyone who learns Pascal is a potential FPC user. We need also to see what Codegear is going to do, it looks like their are going to transform their Turbo editions into packages for beginners, which would be a very good thing.

Show quoted text 5 lines
To summarize the needs: * Tools: contest-friendly IDE; STL-like library * Teaching: Course material, tutorials (make Pascal a wanted language) * People: Supportive jury members

Check.

It would be nice to have some (former) contestants contribute to FPC to make it a compelling contest language.

I'm all for it.

Greetings,

Daniël Mantione

Unknown author
to Daniël Mantione
Good to hear that. Do you see any problems coming on the Pascal side? We might be limited in our options on the political side, but on the technical side we might be able to remove a few arguments out of the hands of Java advocates.

Funnily, I have almost finished a short article containing my opinion on Java as instructional language.

Read the draft here and tell me what you think of it and whether you have something to add:

https://viridian.dnsalias.net/~sky/why_not_java_instructional.xhtml

Leslie

Matt Emson
to Unknown author
Read the draft here and tell me what you think of it and whether you have something to add:

I had a fairly quick glance through; I think you missed the point. Most of your arguments point to something like VB3, not Pascal, ADA or C. You mention the syntax of the Java class - Pacal and ADA are both more complicated. Pascal (okay, mainstream Borland dialect Pascal) has the Program and Unit constructs and ADA its Package body/specification (which IIRC you could skip, but still needed the Program construct similar to the Pascal/Modula3 one.) The Java class with a Main function is no more complex than a tradiditional Pascal "Program". In fact, C is probably the simplest, except you'd need to include at least stdio.h to do anything useful. At the end of the day, its down to syntactical preference. I've taught programming to novices (Pascal/Delphi) and there are as many "what does this mean", "why is that so complicated" and "I don't get why that is there" situations. The difference between program and unit. The sections in the unit (interface, implementation) the way the uses clause works. Circular references. Many, many, many. By contrast, the Java Class is quite simplistic. Especially if the student treats it as a stand alone entity (like a "program" in Pascal) to begin with and does not create any other classes.

Pointers - no, no, no. Java passes by reference. This is not anything to do with "pointers" - you are getting confused between presentation and implementation. The implementation is nothing the student needs to know about at a beginners level. Passing by reference passes the "actual" typed object reference, passing a pointer in C does not. The equiv in C would be to use the & operator in the param list (if that is legal in C? It is in C++.) All [Borland/Delphi, non Turbo Pascal] Object Pascal classes are passed by reference too, so how is that any different to Java? If you wish to pass integral types by reference, box them. It's not exactly rocket science ;-)

Non-standard compiled language.. Java is compiled to bytecode. The bytecode is basically a binary form. The bytecode is akin to machine code. There are plenty of tools (including those within the JDK) that will output Java "assembler" from the bytecode. Indeed, one critisism Java has is that reverse engineering it is trivial. There are also a number of free tools that will compile Java JVM bytecode markup (akin to assembler) to bytecode. Take a look at:

http://jasmin.sourceforge.net/

and more specifically

http://jasmin.sourceforge.net/instructions.html

This one works. I've used it. There are a number of others.

I know you want to seem "non-biased", but the artical sounds like you tried Java, and didn't like it - so you bash it, rather than say anything constructive.

This response is coming from a hardened Delphi coder (of 10+ years) and C# convers ("Java, pah, I spit of you..")

HTH

M

Matt Emson
to Matt Emson
Most of your arguments point to something like VB3

To clarify, I mean in "language complexity". In VB 3, one could (with little extra knowledge) code in BASIC quite quickly.

Vinzent Hoefler
to Matt Emson: I had a fairly quick glance through; I think you missed the point. Most of your arguments…
Matt Emson wrote
I had a fairly quick glance through; I think you missed the point. Most of your arguments point to something like VB3, not Pascal, ADA or C. You mention the syntax of the Java class - Pacal and ADA are both more complicated.

Well, let's do the standard:

Pascal:

   program
      Hello_World;
   begin
      WriteLn ('Hello world.');
   end.

Ada:

   with Ada.Text_IO;
   procedure Hello_World is
   begin
      Ada.Text_IO.Put_Line ("Hello World.");
   end Hello_World;

Java:

   public class HelloWorld {
      public static void main(string[] args) {
         System.out.println ("Hello World.");
      }
   }

Java in that respect is definitely harder to grasp. You learn a lot of keywords in one lesson, though.

Show quoted text 6 lines
Pascal (okay, mainstream Borland dialect Pascal) has the Program and Unit constructs and ADA its Package body/specification (which IIRC you could skip, but still needed the Program construct similar to the Pascal/Modula3 one.) The Java class with a Main function is no more complex than a tradiditional Pascal "Program".

So, it isn't? A full bunch of keywords wrapped inside a class to make it OOP and it's not even close to *any* OOP is *easy*?

Somewhere on the web floats around a HelloWorld.java example that is supposed to do it the correct (Java) OOP way. Now then you scare novices ;), but at least they'll get OOP from the very first beginning.

situations. The difference between program and unit. The sections in the unit (interface, implementation) the way the uses clause works.

Well, at that point programming ends and software engineering starts to emerge. The latter Java already lacks by mixing interface and implementation into one holy mess.

Pointers - no, no, no. Java passes by reference. This is not anything to do with "pointers"

That's why it's called "NullPointerException" instead of "NoneReferenceException", I'd suppose?

Well, it's a minor technicality, if you call it pointer or reference.

To express my very personal point of view on that matter: The only difference is that a reference is guaranteed to be non-NIL by definition. If it can become NIL/NULL/0, it's a pointer.

to know about at a beginners level. Passing by reference passes the "actual" typed object reference, passing a pointer in C does not.

Yeah, right. And Ada does not have pointers either, because it's called access type? Actually, some of it's inner workings make clear, that's it's not just an address as in C - still it's a pointer with all the implications you get with it.

different to Java? If you wish to pass integral types by reference, box them. It's not exactly rocket science ;-)

It's damn hard rocket science, because even if you do that it's still not clear, what sort of parameter mode it is supposed to have. :P

Vinzent.

Daniël Mantione
to Matt Emson: I had a fairly quick glance through; I think you missed the point. Most of your arguments…

Op Mon, 26 Feb 2007, schreef Matt Emson:

Show quoted text 5 lines
> Read the draft here and tell me what you think of it and whether you > have something to add: [explaining classes is not really harder than program/unit]

I disagree with this part. Sure, you will get questions of about programs/units, but the purpose of the keywords belonging to them is way easier to explain than public, static and class.

I want to throw another argument in the arena: libraries. The Java OOP libraries are a powerfull framework, but this adds complexity. Java standard I/O is such a maze of complexity, I'm quite sure readln is easier to explain than streams and tokenizers.

[Java doesn't have pointers but references]

I call references an eufemism for pointers. However, it is true that pointers in Java, which is a managed language, are safer. I.e. you cannot use a pointer after dispose, or leave a memory leak in Java.

However, that is the eternal discussion about the merits of garbage collection. Given that most software is written in a language without garbage collection (namely C), teaching people to be able to program without garbage collection makes sense.

Daniël Mantione

Matt Emson
to Daniël Mantione
Show quoted text 5 lines
> [explaining classes is not really harder than program/unit] I disagree with this part. Sure, you will get questions of about programs/units, but the purpose of the keywords belonging to them is way easier to explain than public, static and class.

To a complete novice, there's not really much in it. Honestly. In fact, students get to grips with basic OOPD fairly quickly. It often removes them from the problem and lets them visualise a solution more clearly.

I want to throw another argument in the arena: libraries. The Java OOP libraries are a powerfull framework, but this adds complexity. Java standard I/O is such a maze of complexity, I'm quite sure readln is easier to explain than streams and tokenizers.

Sure, but Java's API is akin to Win32 API. There's always the scope to write a simplified version if one needs to. Whether theat defeats the object (no pun intended) is another matter.

> [Java doesn't have pointers but references] I call references an eufemism for pointers.

References are typically not pointers. References are more like a "by value" but operating on a central datastore. How languages choose to implement this is not relevant. The fact that usually it's as a typed pointer is just down to the architect of the compiler.

Matt Emson
to Vinzent Hoefler: Well, let's do the standard: Pascal: program Hello_World; begin WriteLn ('Hello world.');…
Show quoted text 10 lines
Well, let's do the standard: Pascal: program Hello_World; begin WriteLn ('Hello world.'); end.

Class: What does program mean? Does the name matter? Does it have to be the same as the executable? Why is there a colon at the end of the line - isn't the begin end at the bottom part of it - like with for or while loops or procedure and functions? Why is there a dot/fullstop/period at the end? What does begin and end mean? Where does "writeln" come from? Why is the System unit hidden?

Show quoted text 8 lines
Ada: with Ada.Text_IO; procedure Hello_World is begin Ada.Text_IO.Put_Line ("Hello World."); end Hello_World;

Wow.. I forgot how horrible ADA was ;-)

Class: "is" what? Why do I need to repeat the name of the procedure? If I use "with" why do I need to put the whole line in again? Why can't I leave out "with" but can leave out "uses"? Where does the "put" put it? - plus some similar ones from the Pascal above.

Show quoted text 7 lines
Java: public class HelloWorld { public static void main(string[] args) { System.out.println ("Hello World."); } }

Thins that are simpler to explain:

1) "void" - the procedure and function paradimn often confuses students. With Java/C./C++/C# the syntax is completely consistent.

2) "public" - try explaining unit syntax to a beginner. The difference between "interface" and "implementation" and the argument for "public" and "private" are already on a par.

3) "static", easily glossed over as a "feature you will find useful later on". No more complex than explaining the entry point in a pascal "program" or how on earth ADA works out what the entry point is in the firtst place.

4) "System.out" how is this any more complex than the Ada example. In fact, if you imported "System.out" it would actually be *simpler* than the ADA example.

5) The string[] array of arguments.. again, it's a fairly simple "you'll find this useful in the future", but it's simply and array of the parameters passen on the command line. The way Pascal handles this is far, far more complicated to explain that the, quite frankly up front, way Java does. ParamStr(), ParamCount and all that business... is not intuitive at all.

Java in that respect is definitely harder to grasp. You learn a lot of keywords in one lesson, though.

Not really. The syntax is different, it's not that you learn anything more or less.

So, it isn't? A full bunch of keywords wrapped inside a class to make it OOP and it's not even close to *any* OOP is *easy*?

No, you can write seriously non OOP code in Java if you treat a class as a "unit". You could even write inline classes if you so wished.

Well, at that point programming ends and software engineering starts to emerge. The latter Java already lacks by mixing interface and implementation into one holy mess.

Java does nothing of the sort. It mixes nothing.. it actually forces the programmer to think about the scope of a routine rather than leaving it up to the luck of the draw, And when it comes to units and classes in Object Pascal - well that's one holy big mess in itself.

Show quoted text 5 lines
> Pointers - no, no, no. Java passes by reference. This is not anything > to do with "pointers" That's why it's called "NullPointerException" instead of "NoneReferenceException", I'd suppose?

Historical.

Well, it's a minor technicality, if you call it pointer or reference.

A reference contains much more information.

Show quoted text 5 lines
> different to Java? If you wish to pass integral types by reference, > box them. It's not exactly rocket science ;-) It's damn hard rocket science, because even if you do that it's still not clear, what sort of parameter mode it is supposed to have. :P

Not really... Objects are passed by reference. That's the only rule you need to remember ;-)

double is a simple type, Double is a class.

double dd = 3.142;
Double dD = new Double(d); //boxed..
Jonas Maebe
to Matt Emson
Matt Emson wrote
Class: What does program mean?

Moderator: can you all please take language comparison discussions to fpc-other?

Thanks.

Jonas
FPC Mailing lists admin

Vinzent Hoefler
to Matt Emson: Class: What does program mean? Does the name matter? Does it have to be the same as the…
Matt Emson wrote 12 lines
> Well, let's do the standard: > > Pascal: > > program > Hello_World; > > begin > WriteLn ('Hello world.'); > end. Class: What does program mean?

"That this unit is supposed to be a program. (Still, you can leave it out in most dialects.)"

Does the name matter?

"It should matter for you. Naming your program "grzbmpfl" does not help memorizing what it was done for."

Does it have to be the same as the executable?

"To be more precise, it should be the same as your sourcefile."

Why is there a colon at the end of the line - isn't the begin end at the bottom part of it -

"Because this tells the compiler that this is the end of the source. Just like the colons in your textbook indicates "end of sentence", although a few spaces and commas would do, too."

What does begin and end mean?

"Precisely what they say. 'begin' some code and 'end' it. It's called block."

Where does "writeln" come from?

"From the 'System' unit."

Why is the System unit hidden?

"It's compiler automatism to aid you getting some useful stuff without telling the compiler. Unlike C, Pascal compiler's are intelligent and know you want to get something done."

Show quoted text 12 lines
> Ada: > > with Ada.Text_IO; > > procedure Hello_World is > begin > Ada.Text_IO.Put_Line ("Hello World."); > end Hello_World; Wow.. I forgot how horrible ADA was ;-) Class: "is" what?

"The procedure *is* the following code block. In the next lessons you see how you can put variables and types declaration local to such subroutines."

Why do I need to repeat the name of the procedure?

"You don't have to, but it is strongly advised to do so, because once programs get larger it is fairly easy to lose track of where a subroutine 'begin's and 'end's."

If I use "with" why do I need to put the whole line in again?

"Because there's a strong difference between telling the compiler to look for something and telling your fellow readers where you have it from.
For the advanced: If you really want to pollute your whole namespace you can put a 'use Ada.Text_IO;' right after the 'with' and you don't need to repeat yourself."

Why can't I leave out "with" but can leave out "uses"?

"Because 'with' is for the reader. 'Use' is for the writer. In Ada the emphasis is on easily readable code. So only one writer has to work more hard to simplify the job of 1000 readers used trying to figure out what

'while (****str() != -1) a = lngcmpw();'

meant to be and if it was correct."

Where does the "put" put it?

"Look up the specification of the 'Ada.Text_IO' package. Now you know where the routine comes from you can easily look at the spec what it does."

Show quoted text 12 lines
> Java: > > public class HelloWorld { > public static void main(string[] args) { > System.out.println ("Hello World."); > } > } Thins that are simpler to explain: 1) "void" - the procedure and function paradimn often confuses students. With Java/C./C++/C# the syntax is completely consistent.

In Ada the paradigm has gotten further. Functions are not allowed to alter their arguments (only in parameters allowed), so the notion of "do_something" and "calculate_something" is perfectly reasonable.

2) "public" - try explaining unit syntax to a beginner.

Hmm. Never had a problem with that. Maybe people who try writing code before thinking about a spec do.

The difference between "interface" and "implementation" and the argument for "public" and "private" are already on a par.

So what does "protected" mean? And why there's no "package" visibility keyword?

3) "static", easily glossed over as a "feature you will find useful later on". No more complex than explaining the entry point in a pascal "program" or how on earth ADA works out what the entry point is in the firtst place.

"Entry point" (last time I heard that I still used TASM3.2)? Who needs an entry point? You compile something and either it is executable from the context or it isn't. Why the hell should someone need a function called "main" each time? On the contrary, what's against different entry points depending on the context?

4) "System.out" how is this any more complex than the Ada example. In fact, if you imported "System.out" it would actually be *simpler* than the ADA example.

Well, I don't import. I DON'T pollute namespace. And I'd teach any beginner not to try. Especially in Java, where you can import wildcards.

5) The string[] array of arguments.. again, it's a fairly simple "you'll find this useful in the future", but it's simply and array of the parameters passen on the command line.

What command line? Tell me where the command line in a web application is? Tell me where on a bare metal system which doesn't even have an OS?

Do I need to tell you that Java was targeted to such systems?

Show quoted text 9 lines
The way Pascal handles this is far, far more complicated to explain that the, quite frankly up front, way Java does. ParamStr(), ParamCount and all that business... is not . > Java in that respect is definitely harder to grasp. You learn a lot > of keywords in one lesson, though. Not really. The syntax is different,

Yes. I said "in that respect".

it's not that you learn anything more or less.

Right, you even learn it wrong, because Java is supposed to be an OOP-only language according to its inventors and in the "Hello world." example is not a single bit of OOP.

Show quoted text 5 lines
> So, it isn't? A full bunch of keywords wrapped inside a class to > make it OOP and it's not even close to *any* OOP is *easy*? No, you can write seriously non OOP code in Java if you treat a class as a "unit". You could even write inline classes if you so wished.

I know that. Sun doesn't. They call Java an OO-language. Well, Smalltalk was. Java is a bunch of crap badly designed from people who just failed their C++ classes.

Show quoted text 5 lines
> Well, at that point programming ends and software engineering > starts to emerge. The latter Java already lacks by mixing interface > and implementation into one holy mess. Java does nothing of the sort. It mixes nothing..

Right. Sorry, I forgot. In Java there's no 's only implementation.

it actually forces the programmer to think about the scope of a routine rather than leaving it up to the luck of the draw,

Considering that local subroutines are something completely unknown to Java and that the package system has nothing to with scope but merely with funny names, I stringly recommend, you rethink what you've just said here.

Actually there is no scope.

Show quoted text 7 lines
> > Pointers - no, no, no. Java passes by reference. This is not > > anything to do with "pointers" > > That's why it's called "NullPointerException" instead of > "NoneReferenceException", I'd suppose? Historical.

Ohoh, even back in the 90ies they didn't know how to call it yet? Although the concept was known and implemented for at least 20 years already? Are you kidding me?

> Well, it's a minor technicality, if you call it pointer or > reference. A reference contains much more information.

Just like an access type in Ada, still in Ada it's technically a pointer.

Show quoted text 9 lines
> > different to Java? If you wish to pass integral types by > > reference, box them. It's not exactly rocket science ;-) > > It's damn hard rocket science, because even if you do that it's > still not clear, what sort of parameter mode it is supposed to > have. :P Not really... Objects are passed by reference. That's the only rule you need to remember ;-)

And that String and Array are objects, although they appear as intrinsic types at the first glance.

double is a simple type, Double is a class. double dd = 3.142; Double dD = new Double(d); //boxed..

Yes. And now it suddenly become immutable, meaning I can't just get information into it which makes the whole point of boxing useless in the context of parameter modes. It'll always be in, but this time by reference.

Vinzent.