Live data from Hacker News

Why did we ever think a student's first programming language didn't matter?

m-cacm.acm.org

201–210 of 286 posts

Re: Why did we ever think a student's first programming language didn't matter?

#201
post #171

Earlier quoted context omitted.

Just a nitpick, but this is false > Haskell is missing the idea of something happening after something else A Monad is implicitly a monoid, which certainly does specify an ordering. And as for expressions, the order of evaluation of arguments is not specified either by C for example.

The bigger problem is that "something happening after something else" is not related to the idea of an if-then-else. In Common Lisp the if-then-else construct is IF. The "something happening after something else" construct is PROGN. The whole point of if-then-else is that only one thing happens ; "something happening after something else" requires a minimum of two things.

I don't really get your point. If/else expressions are in principle free to evaluate both branches, but that would be needless. But when we provide an IO Monad for example, if/else expressions will not suffice in the naive way -- you have to use the monad "bind" operation to actually provide an order -- what it boils down to basically: the A; B; C; in imperative languages become C(B(A())) in pure FP ones -- with implicit ordering.

Re: Why did we ever think a student's first programming language didn't matter?

#202
My father is a CS person, but he barley can code. I spent lot of years learning programming through tutorials and none of them worked, because I lacked critical thinking skills and abstract reasoning.

I believed in miracles. I believed in illogical things.

I was bad at Maths.

I however didn't stop. I took a critical thinking class and become an atheist three years after.

I was to able to see things differently after that.

Still, it was not enough to be able to program, but certainly boosted speed.

I took a Python class. I was able to understand basic concepts of programming.

It's still not enough because I can't make something real world.

I was looking at real world Python projects but they are hard to read and has obscure short names.

Then, I spent my time understanding what an API is. I found bubble.is and there I used my skills to build a real world app and made some money.

I moved to Outsystems and there I boosted my understanding on a lot of concepts.

I started to feel that I was like ready but afraid to swim into a real programming language.

I got angry one day. I wanted to build an API in real world language. So, I googled and found a result for express.js

I hated Javascript because a lot of people hated it in online. But I started to copy paste express.js example it on my machine and modified it according my needs.

I felt relief. I finally started real world programming with Javascript.

I made a lot of money with JS for 6 months.

I then discovered about C++ and the static typing world.

I went to learn C++ despite people telling me you should learn C before learning C++

I got understanding about pointers and memory management, compilers after learning C++

I then moved to embedded space where I did a OS and kernel from scratch.

That's my journey and of course I'm still learning Maths.

Actually, learning critical thinking & programming helped me to see what Maths really is. I'm studying basic algebra and going thru a lot of concepts right now.

Re: Why did we ever think a student's first programming language didn't matter?

#203

Earlier quoted context omitted.

>> I don’t think everyone can understand $RANDOM_DISCIPLINE. > This is a bold claim. I disagree. What makes computer science so special that it can be understood by everyone, while it is generally accepted that other disciplines cannot? After all, saying "Not everyone can understand chemistry" doesn't draw the same ire.

Why do you believe that "not everyone can understand chemistry"? Perhaps I should be a little more specific. When I say "everyone" below, I mean "the overwhelming majority of people in the average range of human intelligence, without debilitating mental deficiencies". This group spans virtually everyone you are likely to encounter, from car mechanics to school teachers, to postal workers, to professional software eng…

> Everyone has the mental capacity to learn $RANDOM_DISCIPLINE if they put in the time and effort.

I know that this feels like something that should be true in an ideal, just world or in the HN-reading bubble, but I've never agreed with this. I know people who are incredibly smart, I know average people who are not very intelligent, but are fairly knowledgeable, I know rather simple people who live simple lives, and I know people who are, bluntly said, absolutely fucking stupid.

I am absolutely sure that I know people who wouldn't be able to get from zero to doing my job exactly the way I do it (and I'm certainly no rockstar programmer, I'm like in the bottom 10 % here) in any reasonable timespan, like 20 years even. I would literally bet any amount of money on it.

Re: Why did we ever think a student's first programming language didn't matter?

#204
post #35
post #18

Earlier quoted context omitted.

> If a student has trouble transferring their knowledge of programming fundamentals “Programming fundamentals” isn’t the same from language to language. It’s inconceivable that a student who learned to program with python would develop the same type of fundamental understanding as a student who used C (to develop an understanding of memory-level APIs) or Haskell (to develop an understanding of type and semantic theor…

Most programmers are not computer scientists. Even most people with computer science degrees are not computer scientists at heart, they forced themselves to do the coursework so they could get a job (mostly web, utilizing almost nothing they were taught). I learned to program as a child (I taught myself, for fun!) but I didn't learn much computer science until well into adulthood.

Why does web dev not use much formal cs in your opinion?

Re: Why did we ever think a student's first programming language didn't matter?

#205
post #29

Earlier quoted context omitted.

I think you’re vastly overestimating programming fundamentals. Every language can do some form of if then else be it machine code with goto’s or purely functional. Ask someone to find the absolute value of a number and they should be able to quickly figure out something that works in a new language. The basics of programming are not about being correct so much as not being lost.

> Every language can do some form of if then else Uh, not exactly. I had a really hard time learning prolog because it doesn't really have if-then-else. Haskell is missing the idea of something happening after something else. Stack languages don't have variables. And so on - there's a lot more to programming than python. There's a big class of popular structured / OO languages which are quite similar (C, JS, Python,…

Haskell very much has an if then else equivalent.

  if' :: Bool -> a -> a -> a
  if' True  x _ = x
  if' False _ y = y
https://wiki.haskell.org/If-then-else

Also, Java was designed to handle performance critical code like that. That’s why people call it a fast language, you can write non performance critical code however you want, but optimize for speed and it’s going to look like C.

Re: Why did we ever think a student's first programming language didn't matter?

#206
As a biologist I learned to program at 34, it was using Python (pandas and seaborn) in Jupiter notebooks. I mainly did data science in the beginning. I can tell you this worked extremely well for me. I could make small steps, add text and output variables and graphs constantly as I “developed”. It took me quite some time to shift to a full vscode flow, I kept going back to notebooks. I’ve become more of a software developer now but for data science (that which I learned in Excel and Origin) I still go back to the notebooks.

Re: Why did we ever think a student's first programming language didn't matter?

#207

Earlier quoted context omitted.

It has been a pipe dream of some since the 1960s that "everybody" would program computers in the future. It hasn't happened and won't happen. Most people simply don't have the patience for it.

Not the patience but the aptitude for it. Writing code simply doesn't require the same amount of intelligence as writing a sentence.

I fully disagree. Many developers struggle just the same.

Re: Why did we ever think a student's first programming language didn't matter?

#208

If a student has trouble transferring their knowledge of programming fundamentals from one language to another, it seems far more likely they didn't really understand them to begin with, which is a failure of teaching and testing, not some sort of 'limitation' in the student.

Try Java as a first language and then abandoning OOP.

Re: Why did we ever think a student's first programming language didn't matter?

#209
Dijkstra in https://www.cs.virginia.edu/~evans/cs655/readings/ewd498.htm... has various quotes that apply here.

The most applicable is, "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."

But do not forget, "The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offence."

Re: Why did we ever think a student's first programming language didn't matter?

#210

Earlier quoted context omitted.

C imparts a very specific architecture onto your code. Scheme is more of a blank slate upon which many different paradigms can be taught.

> Scheme is more of a blank slate upon which many different paradigms can be taught. reply Also, for a lot of first-time programmers, Scheme and other lispy languages, can come with heavier cognitive friction. Unlike procedural languages where you can think about what you want to do, break it down into steps, and then make those steps, there is a higher-level (or deeper-level, if you like) of thinking that needs to g…

While this is true of, say, Haskell, I really don’t think it is true of scheme. You can write procedural, stateful scheme.
Post reply on HN