|
The university where I did my graduate work uses OCaml for the second semester of programming to put all the students on the same level. It's hugely beneficial.
|
# ? Oct 25, 2022 18:32 |
|
|
# ? May 28, 2024 07:49 |
|
Yeah and honestly learning to pick up a weird programming language and apply standard programming thoughts and processes to it is a useful skill to learn, probably moreso than just learning Python/C/whichever, because eventually you're going to pick up at least one more programming language.
|
# ? Oct 25, 2022 18:41 |
|
|
# ? Oct 25, 2022 18:46 |
|
Aghhhhhhhhh Had to look up whether it would compile or not because I’m a c++ noob. “final is an identifier with a special meaning when used in a member function declaration or class head. In other contexts, it is not reserved and may be used to name objects and functions.” From here: https://en.cppreference.com/w/cpp/language/final Compiles, but definitely a horror
|
# ? Oct 25, 2022 19:21 |
|
the real horror is that you can construct an object with a reference to itself
|
# ? Oct 25, 2022 20:08 |
|
namlosh posted:Aghhhhhhhhh The beauty of adding new keywords and not wanting to break anyone ever, so you make the keywords contextual
|
# ? Oct 25, 2022 20:40 |
|
QuarkJets posted:I used to work adjacent to a group that used Racket and Scheme because their literally diagnosed autistic lead developer was in love with those languages, but every single one of them absolutely hated working with them when it came to developing software. I didn't ask for specifics but apparently the MIT professors that created Scheme dropped it from the curriculum because they couldn't find anyone outside of academia who actually wanted to use it for anything from what I've read that's not quite right: quote:The "debate" had an interlude, in which Costanza asked Sussman why MIT had switched away from Scheme for their introductory programming course, 6.001. This was a gem. He said that the reason that happened was because engineering in 1980 was not what it was in the mid-90s or in 2000. In 1980, good programmers spent a lot of time thinking, and then produced spare code that they thought should work. Code ran close to the metal, even Scheme -- it was understandable all the way down. Like a resistor, where you could read the bands and know the power rating and the tolerance and the resistance and V=IR and that's all there was to know. 6.001 had been conceived to teach engineers how to take small parts that they understood entirely and use simple techniques to compose them into larger things that do what you want. http://wingolog.org/archives/2009/03/24/international-lisp-conference-day-two
|
# ? Oct 25, 2022 20:48 |
|
yeah like I only ever went to state schools but "this is too detached from the real world" does not really jive with the M.I.T. joie de vivre, especially when Northeastern, the "come to the other side or the Charles river and get a real job after you graduate from us" school, is the one pushing the Racket curriculum in the first place
|
# ? Oct 25, 2022 22:16 |
|
namlosh posted:“final is an identifier with a special meaning when used in a member function declaration or class head. In other contexts, it is not reserved and may be used to name objects and functions.” Honestly, at some point the language committee needs to just put its foot down, since it'll be years before anyone implements the changes in their compiler anyway.
|
# ? Oct 25, 2022 23:58 |
|
Xarn posted:The beauty of adding new keywords and not wanting to break anyone ever, so you make the keywords contextual
|
# ? Oct 26, 2022 00:19 |
|
take boat posted:from what I've read that's not quite right: I said "because they couldn't find anyone outside of academia who actually wanted to use it for anything", this is saying the same thing!
|
# ? Oct 26, 2022 07:11 |
|
Volmarias posted:
This has been a thing for more than 10 years in all major compilers.
|
# ? Oct 26, 2022 07:40 |
|
QuarkJets posted:I said "because they couldn't find anyone outside of academia who actually wanted to use it for anything", this is saying the same thing! To recap, they dropped it because there was faculty pressure to teach the 'glue libraries together' programming style rather than 'teach the foundations of programming'. That the former, cargo cult programming, is more representative of CS as a trade in industry is fueling most of the content in this thread. I also disagree with the implicit argument that utility in industry is a necessity for a teaching language. In CS programs you want to teach the foundations quickly and effectively, so that students can pick up any language afterwards, by themselves or as part of some other courses. (Does not apply to non-CS students classes, that's another beast.) Different languages exist because some are better in certain domains in others, I don't see why that does not extend to teaching. That said, Racket is trying this weird spread between teaching, academics and industry. I'de rather stick to R4RS, R5RS or just MIT scheme for intro classes.
|
# ? Oct 26, 2022 12:25 |
|
Beef posted:To recap, they dropped it because there was faculty pressure to teach the 'glue libraries together' programming style rather than 'teach the foundations of programming'. That the former, cargo cult programming, is more representative of CS as a trade in industry is fueling most of the content in this thread. idk how you meant this to come across, but it just reads like snobbery to me.
|
# ? Oct 26, 2022 13:33 |
Hammerite posted:idk how you meant this to come across, but it just reads like snobbery to me. Nah, it makes sense. Trade schools and universities should have different goals and approaches, and trying to make one into another is a fool's game.
|
|
# ? Oct 26, 2022 14:38 |
|
Beef posted:I also disagree with the implicit argument that utility in industry is a necessity for a teaching language. (e: It's probably an easier sell now but back in the oughts when I was TAing that Racket class folks were still coming out of the "the only path to a good internship placement is to be allegedly taught Java OOP in your first year" mindset)
|
# ? Oct 26, 2022 14:39 |
|
Osmosisch posted:Nah, it makes sense. Trade schools and universities should have different goals and approaches, and trying to make one into another is a fool's game. I wouldn't dispute what you say in your post here, but there is a lot more than that in Beef's paragraph I quoted. Do you think, like he does that it is reasonable to dismiss any form of programming that can be characterised as "gluing libraries together" as "cargo cult programming"? I do not.
|
# ? Oct 26, 2022 14:55 |
|
Osmosisch posted:Nah, it makes sense. Trade schools and universities should have different goals and approaches, and trying to make one into another is a fool's game. It is possible to make that argument without decrying "cargo cult programming."
|
# ? Oct 26, 2022 14:56 |
|
To clarify, I did not mean to dismiss all glue programming. The intended implication was that when you are only teaching that style, you tend to deliver cargo cult programmers.
|
# ? Oct 26, 2022 15:28 |
|
Dijkstracula posted:probably the strongest argument in favour of it is that you'll otherwise have a constant stream of alumni donors and overachieving first-year honours students in your office whining about you're not teaching marketable, buzzword-compliant skills I hear you. In our case, most of the pressure against Scheme/Racket was coming from uni admin and from inside the department, mostly from non-PLR staff that did not follow our own CS program. Anecdotally, I've seen alumni being pretty vocal and supportive of using a Scheme as first bachelor teaching language.
|
# ? Oct 26, 2022 15:40 |
|
If you find a way of teaching CS that doesn't produce cargo cult programmers please let the rest of us know.
|
# ? Oct 26, 2022 16:02 |
|
Beef posted:I hear you. In our case, most of the pressure against Scheme/Racket was coming from uni admin and from inside the department, mostly from non-PLR staff that did not follow our own CS program. Anecdotally, I've seen alumni being pretty vocal and supportive of using a Scheme as first bachelor teaching language. lucky for me in the intervening years I've mostly taught the second-year C and upper-level OS classes where there ain't gonna be any complaining about the lack of large-scale C deployments in the wild
|
# ? Oct 26, 2022 16:35 |
|
Beef posted:To recap, they dropped it because there was faculty pressure to teach the 'glue libraries together' programming style rather than 'teach the foundations of programming'. That the former, cargo cult programming, is more representative of CS as a trade in industry is fueling most of the content in this thread. But you can see how that connects to what I said, right? The pressure wasn't specifically to change languages, it was to include third party library integration in the curriculum. How do you do that with a language that has no third party libraries?
|
# ? Oct 26, 2022 16:51 |
|
Beef posted:To clarify, I did not mean to dismiss all glue programming. The intended implication was that when you are only teaching that style, you tend to deliver cargo cult programmers. I see. Thank you for clarifying, that makes more sense.
|
# ? Oct 26, 2022 16:54 |
|
QuarkJets posted:But you can see how that connects to what I said, right? The pressure wasn't specifically to change languages, it was to include third party library integration in the curriculum. How do you do that with a language that has no third party libraries? That feels like a useful skill but also one best kept out of the very intro courses?
|
# ? Oct 26, 2022 17:03 |
|
That statement reads as somewhat bitter, and I don’t think we need to take it for granted that it is actually a good description of what happened. If they were getting a ton of pressure from other faculty, the most likely thing is that professors resented being forced to re-teach programming at the start of all their courses because the intro course didn’t introduce students to any language remotely like the languages they were teaching in.
|
# ? Oct 26, 2022 17:30 |
|
QuarkJets posted:But you can see how that connects to what I said, right? The pressure wasn't specifically to change languages, it was to include third party library integration in the curriculum. How do you do that with a language that has no third party libraries? Yes, I see how they are connected. There is some irony in the fact that Guile is the language used in GUIX to describe libraries and packages.
|
# ? Oct 26, 2022 17:34 |
|
OddObserver posted:That feels like a useful skill but also one best kept out of the very intro courses? Why?
|
# ? Oct 26, 2022 17:42 |
|
QuarkJets posted:Why? Get people comfortable with the basics and building abstractions of their own before they deal with third-party ones?
|
# ? Oct 26, 2022 17:45 |
|
QuarkJets posted:Why? Give a man a SAX parser, and he is relevant for a day. Teach a man recursion and he is relevant for a lifetime.
|
# ? Oct 26, 2022 17:47 |
|
When I was learning C++ in school they were very specific; you can not use Boost. I don't know much C++ anymore but anyway I guess my point is as I've aged and gotten more comfortable in my career, I appreciate what was my comp sci curriculum a lot more.
|
# ? Oct 26, 2022 17:59 |
|
OddObserver posted:Get people comfortable with the basics and building abstractions of their own before they deal with third-party ones? Why can't both of those things happen in an intro course, one followed by the other?
|
# ? Oct 26, 2022 18:13 |
|
You can maybe spend a little bit of time on third party components in an introductory software engineering course, but it really is something that's better learned on the job. It's better to fill up the curriculum with things that are important but hard to learn outside of an academic environment.
|
# ? Oct 26, 2022 18:29 |
|
I vaguely remember some parts of CS courses structured as "you know that thing you've been using this whole time? Now you're gonna implement it yourself!" Gave some motivation that was missing from "you're gonna need this someday so just do it now".
|
# ? Oct 26, 2022 18:46 |
Hammerite posted:I wouldn't dispute what you say in your post here, but there is a lot more than that in Beef's paragraph I quoted. Do you think, like he does that it is reasonable to dismiss any form of programming that can be characterised as "gluing libraries together" as "cargo cult programming"? I do not. No, I read it more as how he clarified it (it's a follow-up skill to teach at best if at all) but I was being a bit glib and kind of tangential, sorry.
|
|
# ? Oct 26, 2022 19:19 |
|
Osmosisch posted:Nah, it makes sense. Trade schools and universities should have different goals and approaches, and trying to make one into another is a fool's game. Like it or not, let me know when you find (non sysadmin) computer speaker jobs that don't demand a computer science degree in the job posting. Imagine if everyone who wanted to be an electrical engineer had to have a BA in Physics because "that's what understanding how electricity works is, right? If you want to wire up lights go to electrician school" I barely touch any of the CS studies I learned since I've graduated, because I am not an academic, but every job has required that degree because there's nothing else proximate to it.
|
# ? Oct 26, 2022 20:51 |
|
Volmarias posted:Like it or not, let me know when you find (non sysadmin) computer speaker jobs that don't demand a computer science degree in the job posting. Imagine if everyone who wanted to be an electrical engineer had to have a BA in Physics because "that's what understanding how electricity works is, right? If you want to wire up lights go to electrician school" None of our job postings require a degree. I have been working professionally for over 10 years and have no degree in anything, yet still manage to find work. Obviously the experience makes that much easier now but it still didn’t prevent me from finding work earlier on!
|
# ? Oct 26, 2022 21:23 |
|
ultrafilter posted:If you find a way of teaching CS that doesn't produce cargo cult programmers please let the rest of us know. I think the closer you get to foundational knowledge, the less likelihood you will have this problem. Perhaps a better way of saying this is, 'The more foundational your knowledge, the more equipped you are to make pragmatic choices'. There is a distinction to be made between 'Software Engineer' and 'API Technician'. File me under 'elitist prick' here I guess, but I'm going to put a shitload more stock into what a C++ greybeard has to say vs someone who's spent their entire life in a browser. Canine Blues Arooo fucked around with this message at 21:32 on Oct 26, 2022 |
# ? Oct 26, 2022 21:27 |
|
Canine Blues Arooo posted:There is a distinction to be made between 'Software Engineer' and 'API Technician'. File me under 'elitist prick' here I guess, but I'm going to put a shitload more stock into what a C++ greybeard has to say vs someone who's spent their entire life in a browser. This just reads to me like you're inventing someone for the purpose of sneering at them
|
# ? Oct 26, 2022 22:19 |
|
|
# ? May 28, 2024 07:49 |
|
Canine Blues Arooo posted:I think the closer you get to foundational knowledge, the less likelihood you will have this problem. Perhaps a better way of saying this is, 'The more foundational your knowledge, the more equipped you are to make pragmatic choices'. Out of curiosity, how much personal experience do you have with modern web frontend development?
|
# ? Oct 26, 2022 22:42 |