Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I mean, one may assume incompetence and corruption. And perhaps that's the case. But on the other hand, teaching languages are not the same as production languages. There are a number of languages that may be more powerful, but I think Delphi is a decent choice for teaching.

* You want to teach principles. Delphi allows you to teach OOP principles. You may or may not agree that OOP should be the starting paradigm, but that is at least a popular and conventional opinion.

* You don't want complexity. I am sure there are many alternatives that do things better. Heck, I am sure some Haskell guy will tell us itt how he can build a graphical interface in half a line of code. But remember these are kids who may not even understand what a program even is!

* You want results. In particular, it should be easy to create things like a user interface via the IDE. The fun about learning programming is to create something cool. Kids today most often use UI's and not terminals, and I think there is real value to allowing them to create something they might actually use. If you struggle through understanding your first program, and all it does is to print out "Hello World" on a black interface, it is somewhat underwhelming. But if you can use the IDE to create your custom "hello world" box with pink borders and a unicorn picture - well that's cool!

* Of course you want students to be able to transfer their skills to other languages. But that's arguably not a big issue with Pascal.

* Finally, you want it all in one package. If you have to learn a vast module infrastructure, it just complicates things. Here is your "language", you can do everything in it. I remember when we were learning, we started to try to build games and stuff. We used the tools available to use, because it was all very complex and we understood little. It was useful to have such a limited toolbox in the view of complexity. I think if we were forced to think about modules and many, many options to do a thing, we'd probably give up. Of course it is educational to try to come up with a solution with a limited set of tools!

From this perspective, Delphi is not a bad choice. Indeed I think the only other similar choice would be C#, which would probably cost more.



I don't think the motivation is teaching-related at all. For teaching there are way better languages than Object Pascal, which is kind of outdated and has a lot of anachronisms.

However, Delphi is an outstanding tool for production and together with Freepascal/Lazarus one of the best options for cross-platform application development - certainly on a par with C++/Qt. So this is a pretty smart move of Turkey to get some innovation going, and I expect great new end-user applications to come from Turkey during the next 10 years.


> has a lot of anachronisms

Such as?


It's not garbage collected, but also, not completely manually memory managed either. I can't quite recall how it works but it's mostly some sort of ref counting + some manual.

When teaching, non-GCd languages just get in the way. You don't want students apps to be segfaulting constantly because they're running into memory errors whilst you're trying to teach them something else. Learn programming and get confident with it first, THEN learn the techniques needed to safely manage memory (maybe).

I actually learned programming as a kid with first Turbo Pascal then Delphi. My programs crashed with the dreaded access violation error all the time. Debugging that sucked. I assume it's better these days.


It is manually memory managed, but that is only for objects you create explicitly or memory you allocate explicitly. Other types that deal with dynamic memory, like dynamic arrays and strings are reference counted.

But i still do not see why this is an anachronism. Do you consider manual memory management an anachronism?


>>My programs crashed with the dreaded access violation >>error all the time. Debugging that sucked. I assume >>it's better these days.

How would automatic garbage collection help in a scenario where you are deliberately accessing an object that you haven't created or have destroyed already?


Hm, have you used a GCd type safe language before? This is a bit of an odd question. In modern languages like Java (but unlike Delphi) you can't access an uncreated object or manually destroy objects, outside of special cases like file handles.

My point is that there's a lot to learn when you start out programming. Most developers don't write manually memory managed code anymore so it's a skill that can be pushed far down the list of things to learn, and trying to learn it right at the start will just get in the way.


I’m curious... how could c# cost more when the language is open source and Visual Studio Community is free?


They probably kept in mind brain drain factor. Delphi isn’t all that bad though, it’s actually great to learn programming


You may love or hate js but it makes great language to start with, runs in your browser and has infinite labyrinths of complexity in every direction - perfect for students to play with. Why nobody is using it to teach?


Because it's a nightmare with ridiculous missing hunks, like the fact that you can't put anything but primitive types in a Set usefully. Why would you use it to teach?


Yes, I'd have lesson explaining it's behavior, how it works any why it works this way and maybe assign homework to extend it to support uniqueness based on structural equality.


You can't extend it to support uniqueness based on structural equality, because the Set type uses == to test, and there is no means in the language of overriding that.


You can extend it, trivial one would be by subclassing and overriding methods to iterate over all entries doing deep-equal. Better complexity can be achieved by hashing (doesn't need to be collision free) and scanning subsets per hash etc.




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: