Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
ultrafilter
Aug 23, 2007

It's okay if you have any questions.


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.

Adbot
ADBOT LOVES YOU

Falcon2001
Oct 10, 2004

Eat your hamburgers, Apollo.
Pillbug
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.

Carbon dioxide
Oct 9, 2012

namlosh
Feb 11, 2014

I name this haircut "The Sad Rhino".

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

cheetah7071
Oct 20, 2010

honk honk
College Slice
the real horror is that you can construct an object with a reference to itself

Xarn
Jun 26, 2015

namlosh posted:

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

The beauty of adding new keywords and not wanting to break anyone ever, so you make the keywords contextual :v:

take boat
Jul 8, 2006
boat: TAKEN

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.

But programming now isn't so much like that, said Sussman. Nowadays you muck around with incomprehensible or nonexistent man pages for software you don't know who wrote. You have to do basic science on your libraries to see how they work, trying out different inputs and seeing how the code reacts. This is a fundamentally different job, and it needed a different course.

So the good thing about the new 6.001 was that it was robot-centered -- you had to program a little robot to move around. And robots are not like resistors, behaving according to ideal functions. Wheels slip, the environment changes, etc -- you have to build in robustness to the system, in a different way than the one SICP discusses.

http://wingolog.org/archives/2009/03/24/international-lisp-conference-day-two

Dijkstracula
Mar 18, 2003

You can't spell 'vector field' without me, Professor!

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

Volmarias
Dec 31, 2002

EMAIL... THE INTERNET... SEARCH ENGINES...

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.”
From here:
https://en.cppreference.com/w/cpp/language/final

:stonklol:

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.

Foxfire_
Nov 8, 2010

Xarn posted:

The beauty of adding new keywords and not wanting to break anyone ever, so you make the keywords contextual :v:
Contextual keyword is better than forbidding using the word 'final' as a variable name even if there was no history. It's not something that ever actually confuses someone

QuarkJets
Sep 8, 2008


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!

Xarn
Jun 26, 2015

Volmarias posted:

:stonklol:

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.

This has been a thing for more than 10 years in all major compilers.

Beef
Jul 26, 2004

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.

Hammerite
Mar 9, 2007

And you don't remember what I said here, either, but it was pompous and stupid.
Jade Ear Joe

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.

Osmosisch
Sep 9, 2007

I shall make everyone look like me! Then when they trick each other, they will say "oh that Coyote, he is the smartest one, he can even trick the great Coyote."



Grimey Drawer

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.

Dijkstracula
Mar 18, 2003

You can't spell 'vector field' without me, Professor!

Beef posted:

I also disagree with the implicit argument that utility in industry is a necessity for a teaching language.
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 :sigh:

(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)

Hammerite
Mar 9, 2007

And you don't remember what I said here, either, but it was pompous and stupid.
Jade Ear Joe

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.

raminasi
Jan 25, 2005

a last drink with no ice

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."

Beef
Jul 26, 2004
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.

Beef
Jul 26, 2004

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 :sigh:

(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)

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.

ultrafilter
Aug 23, 2007

It's okay if you have any questions.


If you find a way of teaching CS that doesn't produce cargo cult programmers please let the rest of us know.

Dijkstracula
Mar 18, 2003

You can't spell 'vector field' without me, Professor!

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.
yeah I guess the nice thing about being a TA is that administration was hidden behind faculty so I never saw that aspect of it

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 :clint:

QuarkJets
Sep 8, 2008

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?

Hammerite
Mar 9, 2007

And you don't remember what I said here, either, but it was pompous and stupid.
Jade Ear Joe

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.

OddObserver
Apr 3, 2009

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?

rjmccall
Sep 7, 2007

no worries friend
Fun Shoe
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.

Beef
Jul 26, 2004

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.

QuarkJets
Sep 8, 2008

OddObserver posted:

That feels like a useful skill but also one best kept out of the very intro courses?

Why?

OddObserver
Apr 3, 2009

Get people comfortable with the basics and building abstractions of their own before they deal with third-party ones?

Beef
Jul 26, 2004

Give a man a SAX parser, and he is relevant for a day. Teach a man recursion and he is relevant for a lifetime.

Macichne Leainig
Jul 26, 2012

by VG
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.

QuarkJets
Sep 8, 2008

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?

ultrafilter
Aug 23, 2007

It's okay if you have any questions.


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.

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.
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".

Osmosisch
Sep 9, 2007

I shall make everyone look like me! Then when they trick each other, they will say "oh that Coyote, he is the smartest one, he can even trick the great Coyote."



Grimey Drawer

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.

Volmarias
Dec 31, 2002

EMAIL... THE INTERNET... SEARCH ENGINES...

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.

necrotic
Aug 2, 2005
I owe my brother big time for this!

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"

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.

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!

Canine Blues Arooo
Jan 7, 2008

when you think about it...i'm the first girl you ever spent the night with

Grimey Drawer

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

Hammerite
Mar 9, 2007

And you don't remember what I said here, either, but it was pompous and stupid.
Jade Ear Joe

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

Adbot
ADBOT LOVES YOU

raminasi
Jan 25, 2005

a last drink with no ice

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'.

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.

Out of curiosity, how much personal experience do you have with modern web frontend development?

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply