6

Learning Python as a first language. Or Pascal. It's a tie between mainstream informal and obsolete formal education.

Comments
  • 6
    Delphi is still a thing.
  • 1
    That all depends on the goal

    Do you just like to code or are you planing to make use of it?

    While I loved Turbo Pascal its not a language I would choose today, and for delphi I never really liked it for some strange reason, I did try it.

    I made my first and several later commercial programs in Turbo Pascal 5.5 but for windows I went with Visual Basic since I got it while still in beta.

    But between pascal and python if you plan to use it in any professional I would go with python, its a language which many have an opinion on but its widely used with lots of existing resources, tutorial and examples.
  • 5
    @Demolishun Gosh I miss being able to deploy one .exe and it "just work". No platform quirks, no DLL hell, just happy users.
  • 1
    @Demolishun haven’t heard / read Delphi in a looong time...
  • 2
    Definitely Pascal if you're a total beginner
  • 5
    Even if I have not used Delphi or FreePascal for a long while now, I am very happy about it being my first "real" programming language. The start was easy (procedural with optional object-orientation, simple but powerful UI framework), being forced to a structured programming style from the very beginning prevented learning bad habits that I would have to overcome later, and it is powerful enough for being able to tinker around with it A LOT without being too complex for beginners. Besides that, the German Pascal/Delphi community is still huge, so it was no problem to learn programming without any notable English skills.
    Every couple of years I make a little project with it and have a lot of fun. So it will remain there inside this charming corner of my heart as long as I live.
  • 1
    Note I am talking about today's world. But I may be a bit biased with Pascal as I had a very bad experience with (Free)Pascal. I did quite cool stuff but the University experience was awful.
  • 1
    I think that it depends. If you're gonna be a professional, I'd rather go with lower-level languages like C. If it's a hobby, then sure Python or JS.

    I had my CS classes in Python and my friends struggled understanding the concept of "passing a reference to the function", static objects, the difference between a static and a dynamic array, dynamically allocated memory, and other low-level concepts. I had learned C as my first (although I admit I was never too good at it), so these concepts came naturally. I think starting with Python gives you many misconceptions about the nature of programming that are hard to overcome.

    However, if you're not gonna take CS seriously, then any other language is an unnecessary pain.
  • 0
    Starting with Python and moving on the C/whatever is perfectly fine and done in many universities. There's a difference between computation and computers and Python is excellent at removing unnecessary details to focus on the former. People don't just go braindead because they didn't start with pointers.
  • 1
    @RememberMe Every person I've met that learned Python as a first language has had more difficulties learning a second language. It's not my opinion, it's a fact.
  • 0
    @c3r38r170 MIT and CMU (among many others) both start their CS curriculum with an introduction to programming via Python (that's 6.0001 for MIT and 15-112 for CMU). These folks go on to teach C, algorithms, systems programming, OS development, firmware/embedded development etc. to the same students. Again, there's a difference between computation and computers.

    The top down approach works just fine. It also depends on the person and the way they're taught I guess.

    Also, "every person I've met" does make it an opinion. That's not nearly a large enough dataset to draw any meaningful conclusion.
  • 1
    @RememberMe I bet most people that go to MIT and CMU already know coding principles.
  • 1
    @c3r38r170 a lot, but not all, and many transition from other fields. Also the way the courses are designed (starting with variables, loops, etc.) implies they don't assume you know anything. It's supposed to be a fresh start for everyone.

    Again, I fail to see how starting with Python hampers you in any way. It has variables, loops, functions, recursion; basic data structures like lists, tuples, vectors, maps; and a metric ton of libraries that make doing stuff with it extremely simple. The only concept it doesn't have are pointers (but it *does* have references) and arguably manual memory management. Also it doesn't have a good, strong type system.

    It's not the greatest because types are pretty important (explicit pointers and memory management are low level implementation details that are only relevant based on your level of abstraction and your computing model. They are *not* fundamental concepts to computation, but to von Neumann architecture computers. Look how C falls flat on its face when dealing with other fundamental models like lambda calculus or hardware synthesis) but since you're starting out, you can learn all that later on easily enough.

    If we start people from the actual bottom up, everybody should start learning from fundamental physics and abstract maths, on to applied physics and maths, then to device engineering and VLSI, then computer organization and architecture, then type theory and logic, and then you get to write your first Hello World program. ngl that's pretty awesome and I personally would love that, but you'd take years to write hello world. If you're willing to skip *all* that stuff and start with C, which is insanely abstracted and high level already (from this PoV), why not raise the abstraction just a little bit more and start with Python?
  • 0
    I'd go with Python. Pascal is a little too 1993 for me...
  • 1
    @RememberMe You may hold there's no reason why not, but there's still no reason why yes. It is more friction for no real benefit over any other language.
  • 1
    @c3r38r170 what friction? Python is much simpler than most other languages and has very comfortable abstractions. There's no benefit to that I guess apart from being simple enough to illustrate the principles of programming very clearly without getting bogged down with details, which happens to be extremely important for a teaching language.

    What would you do instead and what does that do better?
  • 0
    After reading @RememberMe 's arguments, I partly retract my comments about C. Maybe C -> Python worked for me but it might not work for everyone else. I'd also like to add that starting with a hard language like C will demotivate many people from pursuing the field. I think it's more about the teachers evaluating their students and then choosing the correct path for them, although this will be super hard with mass-education systems.
Add Comment