Hacker News new | ask | show | jobs
by naasking 2261 days ago
That's ridiculous. It's computer science, not computer programming technician. You teach with the tool that most clearly distills the principles of what you're trying to teach. Racket and Scheme arguably do that much better than Python.

In fact, Racket 15 years ago still has more cutting edge features than Python has to this day. There is simply no language that provides the breadth of features available in Racket, and I don't even use it.

> Academia has scared away an untold number of aspiring students with their nonsense languages

A programmer that's scared or intimidated by learning a new language does not belong in this industry. You might as well say that we should coddle civil engineering students that are scared of computers. If this is a barrier you can't surmount, consider another career.

2 comments

I thought the person that you're replying to made a very good point about Esperanto. Why do we teach linguistics with messy real-world languages instead of conlangs that most clearly distill the principles we want to teach?
One of the chief concerns in introductory linguistics programs is introducing students to the great typological diversity of the world's languages. There are a number of different ways in which languages can inflect (or not), structure word order, derive new words from existing vocabulary, etc. Conlangs, however, tend to choose a very limited set of approaches, for example agglutinative inflection is popular because creators feel it makes the language easier to learn. Just as some North American departments have been mocked for doing all their theoretical work purely on the basis of English (or other European languages), using a conlang would make students miss out on the full range of human linguistic expression.

All human languages have at least some irregularities, and the way in which speakers deal with those irregularities is an interesting series of phenomena in itself, but most conlangs aim to be fully regular. A similar situation holds for phonology in which most languages have a developed system of allophony and sandhi, but conlangs typically don't aim to represent those phenomena at all.

Right. And doesn't that apply to programming languages too? Aren't the ways that Python is irregular to support real-world needs (the Zen of Python even says "Practicality beats purity") worth CS students studying?
No, because this is computer science and not software engineering. The best introductory language is the one that allows to express the concepts that are presented in the cleanest way possible. If you want "real-world needs" then drop out and work for a software company. The purpose of universities is not to cater to the needs of industry - to pump out code monkeys.
Just to make sure I understand you correctly - you're arguing that it is not the place of universities to address real-world needs? History and economics faculty should have nothing to offer to politicians? Biologists in universities should study model organisms, leaving the study of humans to the medical industry, and biology degree programs should not pump out health monkeys? Law professors should discuss specially-constructed legal systems that are not used by real-world jurisdictions so that concepts can be presented in the cleanest way possible? Music programs should avoid teaching actual Bach chorales because his real-world music sometimes included parallel fifths?
I didn't say anything about areas whose research focus coincides with 'real-world needs', I specifically talked about programming languages and concepts. And no, universities should not teach micro services, enterprise Java code, or the latest frontend frameworks. But yeah, keep twisting my words around.
Interesting point. You are mixing up teaching language with teaching linguistics. Teaching linguistics usually includes phonetics, phonology, morphology, syntax, semantics, pragmatics, discourse, typology and semiotics. Quite similar to teaching computer science. The concepts are independent of the implementation. In this context using Python is bad because it has a very limited set of concepts that worth knowing. Racket has many more. In the context of working in the industry Python _experience_ might be more valuable, but it has nothing to do with how good it is to tech computer science.

https://ufal.mff.cuni.cz/~hana/teaching/2015wi-ling/01-Intro...

OK, so you're saying that in universities that teach linguistics (instead of teaching languages), they do in fact strongly prefer to teach in idealized conlangs like Esperanto and avoid working with irregular real-world languages?

Can you give me an example of such a university curriculum?

No, I am saying, universities teaching linguistics are teaching concepts. They might teach how some of these concepts are in a particular language, quite often they choose the language of the country they reside in. It would be hard to teach advanced concepts in Python. That is all.
What advanced concepts are hard to teach in Python?

Also, do you generally teach advanced concepts in an introductory CS class?

> Also, do you generally teach advanced concepts in an introductory CS class?

This is also what I struggled to understand with other comments. An introductory CS class's purpose to introduce, warmup and invite students (most often w/ no background) to the world of CS. This means low barrier of entry. (which Python is well suited for).

Yes, there are other languages that offer more features and more explicitly but the point of intro CS classes is to spark the curiosity with a great feedback loop, while eliminating obstacles to learn.

> Why do we teach linguistics with messy real-world languages instead of conlangs that most clearly distill the principles we want to teach?

Because we're not teaching language science in that case, we're teaching proficiency in an actual language.

An industry language is fine for a software engineering degree, or a technician degree of some sort.

Just to make sure I understand you right - you're claiming that the academic discipline of linguistics is not "language science," it's "proficiency in an actual language", and a school with a "language science" program instead of a linguistics program would teach introductory language science in a conlang?

https://en.wikipedia.org/wiki/Linguistics

You can teach the principles of computer science without forcing some obscure and difficult language on new programmers. Learning programming is hard enough, no need to add more bullshit on top of it!
What is particularly more difficult about Racket, other tha maybe using a paradigm you are not familiar with?
Did you read the linked article? It is a pretty thorough explanation along with surveys of students. Only 22% liked racket!
So most people who know almost nothing about programming hate Racket. Can't say I find that compelling.
But they prefer Python.

I think we need to note that the specific population you are referring to is directly the ones who are being affected. It might also be a good idea to consider their input.

I remember in high school when only 20% of my class liked math. We should stop teaching math, right?