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
X-BUM-RAIDER-X
May 7, 2008

Bream posted:

Yeah, guys, why don't you kiss girls and get on github instead of all this nerd poo poo?
nobody accepts my pull requests

Adbot
ADBOT LOVES YOU

Cybernetic Vermin
Apr 18, 2005

introductory programming is not about binary trees though, it is about getting people to the point where they understand what programming is and how to break a problem apart and string together a program out of it

and as it turns out python is working rather poorly

X-BUM-RAIDER-X
May 7, 2008
yeah man gently caress python, let's get people writing assembler, that'll teach them (literally)

Blotto Skorzany
Nov 7, 2008

He's a PSoC, loose and runnin'
came the whisper from each lip
And he's here to do some business with
the bad ADC on his chip
bad ADC on his chiiiiip

OBAMA BIN LinkedIn posted:

just because it's harder to make a binary tree in C than it is in python doesn't mean the student gets any more of a learning experience of it, infact they probably get less because they spend all their time messing about with memory errors and debugging than actually learning how the algorithm works. save the memory management crap for C or operating systems classes where it belongs.

a binary tree is not an algorithm

Cybernetic Vermin
Apr 18, 2005

those are literally all possible choices yeah

X-BUM-RAIDER-X
May 7, 2008
last time i checked, making a binary tree had something to do with implementing algorithms.

Zombywuf
Mar 29, 2008

There is far less to learn when learning assembler (at least with a decent assembly language). The first difficulty with beginners is syntax and vocabulary, asm has near trivial syntax and a pretty limited vocabulary. For the same reason Logo would also make a good intro language.

Cybernetic Vermin
Apr 18, 2005

Zombywuf posted:

There is far less to learn when learning assembler (at least with a decent assembly language). The first difficulty with beginners is syntax and vocabulary, asm has near trivial syntax and a pretty limited vocabulary. For the same reason Logo would also make a good intro language.

a core concept of the introductory course should be functions though, local variables, scopes, and all that, and assembler is a bit too permissive there.

X-BUM-RAIDER-X
May 7, 2008
assembler is a terrible language for beginners because you are introducing them to a whole bunch of concepts that the beginner shouldn't need to know about at this, like the stack and the heap and pointers. even basic operations such as loops can cause painful errors for a beginner if they get a command or two out of order. it's for this reason that some smart people invented abstractions such as loops and functions so that you didn't need to be a fuckin sperglord to get past that first step.

X-BUM-RAIDER-X
May 7, 2008
i'm legit surprised there are still people who actually believe asm is a great language for beginners, i mean come the gently caress on.

MononcQc
May 29, 2007

Notorious b.s.d. posted:

funny that you should mention ad bidding, seeing as java dominates that space

appnexus was just the first to come to mind because i have actually talked to these guys. they work under hard real-time constraints with millions of transactions a second, all java all the time

gc pausing really is a non-issue. you can still have stop-the-world gc in real-time, because what is important is predictable pauses, not the presence or absence of pausing. (i think they mostly use concurrent gc tho, to sidestep the issue entirely)

I work in real time ad bidding, and we use Erlang (so does OpenX, they use one of my libs for dispatching client calls). Concurrent GC works 100% fine for us (we generate between 70MB to 100MB of garbage per second per server).

In our case, the GC works so well because each request basically ends up having an independent nothing-shared heap+stack space, and the VM will GC them when they get descheduled for another request, or when the request is done and it can basically throw away the entire heap+stack space for that process.

Also I'd consider us to be soft real time rather than hard real time, but I guess that can be debated.

Cybernetic Vermin
Apr 18, 2005

we used to do sml as the first language. that worked very nicely, very few moving parts (modules and all imperative stuff cut). ended up getting axed due to student pressure though, it was felt too useless in the real world (an argument i feel is out of place in the first programming course)

i think java was the right idea for a replacement, but we don't do that any longer either

X-BUM-RAIDER-X
May 7, 2008
the best thing about intro programming classes is not turning up to them

weird
Jun 4, 2012

by zen death robot

quote:

Now, the reason that we think computer science is about computers is pretty much the same reason that the Egyptians thought geometry was about surveying instruments. And that is, when some field is just getting started and you don't really understand it very well, it's very easy to confuse the essence of what you're doing with the tools that you use. And indeed, on some absolute scale of things, we probably know less about the essence of computer science than the ancient Egyptians really knew about geometry.

Well, what do I mean by the essence of computer science? What do I mean by the essence of geometry? See, it's certainly true that these Egyptians went off and used surveying instruments, but when we look back on them after a couple of thousand years, we say, gee, what they were doing, the important stuff they were doing, was to begin to formalize notions about space and time, to start a way of talking about mathematical truths formally.

That led to the axiomatic method. That led to sort of all of modern mathematics, figuring out a way to talk precisely about so-called declarative knowledge, what is true.

Well, similarly, I think in the future people will look back and say, yes, those primitives in the 20th century were fiddling around with these gadgets called computers, but really what they were doing is starting to learn how to formalize intuitions about process, how to do things, starting to develop a way to talk precisely about how-to knowledge, as opposed to geometry that talks about what is true.

weird
Jun 4, 2012

by zen death robot
Yeah just make people deal with a lot of memory management overhead instead of letting them focus on the computer science part of computer science

Tiny Bug Child
Sep 11, 2004

Avoid Symmetry, Allow Complexity, Introduce Terror

Bream posted:

Dudes someone at some point has to know how to do this poo poo. Javascript is not self-hosting.

yeah and at some point some poor schmuck had to dig a bunch of metal out of the ground to make my car, but who cares

qntm
Jun 17, 2009

Cybernetic Vermin posted:

it is also a lot harder than one thinks to teach language subsets unless the subsets are very cleanly separable, and both c and java work out reasonably well there

no lie, working out what order to explain things in is a pain

tight coupling in language concepts themselves, you can't explain any single thing without explaining four other things which both require understanding of the first thing

Cybernetic Vermin
Apr 18, 2005

MononcQc posted:

I work in real time ad bidding, and we use Erlang (so does OpenX, they use one of my libs for dispatching client calls). Concurrent GC works 100% fine for us (we generate between 70MB to 100MB of garbage per second per server).

In our case, the GC works so well because each request basically ends up having an independent nothing-shared heap+stack space, and the VM will GC them when they get descheduled for another request, or when the request is done and it can basically throw away the entire heap+stack space for that process.

Also I'd consider us to be soft real time rather than hard real time, but I guess that can be debated.

the software term "realtime" is misapplied a lot, it really should involve precise cyclecounts to ensure that systems always respond before some physical deadline. for trading systems (which I guess your system really is) one often says high-frequency when you want to minimize response times and the expenses get much greater with longer delays (e.g. it gets increasingly probable that one is missing an opportunity)


VanillaKid posted:

Yeah just make people deal with a lot of memory management overhead instead of letting them focus on the computer science part of computer science

the cs students are pretty easy since they pretty much breeze through the intro programming either way, lots and lots of majors have some programming though

Catalyst-proof
May 11, 2011

better waste some time with you

OBAMA BIN LinkedIn posted:

yeah man loving centuries of papers back the prof up when it comes to teaching a student to program data structures in loving assembly language. C is bad enough, but assembly? lmao

just because it's harder to make a binary tree in C than it is in python doesn't mean the student gets any more of a learning experience of it, infact they probably get less because they spend all their time messing about with memory errors and debugging than actually learning how the algorithm works. save the memory management crap for C or operating systems classes where it belongs.

i agree, the field of computation is only what... 40 years old. who's euler. who the gently caress is that guy.

edit: i don't care about this dumb gay argument

edit: make students program in whatever fcucking language, who cares, they're students, if they don't like it, they can pull a socracheese and dump out

edit: or just bitch about dropping out

Catalyst-proof fucked around with this message at 18:52 on Feb 28, 2013

Zombywuf
Mar 29, 2008

qntm posted:

no lie, working out what order to explain things in is a pain

tight coupling in language concepts themselves, you can't explain any single thing without explaining four other things which both require understanding of the first thing

Hence asm, or logo. At least to the point where they get that a program is made up of statements which are executed one after the other.

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug
kinda want to make a logo impl in coffeescript now

skeevy achievements
Feb 25, 2008

by merry exmarx

Cybernetic Vermin posted:

we used to do sml as the first language. that worked very nicely, very few moving parts (modules and all imperative stuff cut). ended up getting axed due to student pressure though, it was felt too useless in the real world (an argument i feel is out of place in the first programming course)

i think java was the right idea for a replacement, but we don't do that any longer either

speaking as someone who paid for all his student expenses and bought a new car form summer jobs just because I learned a bit of C in school, I can see where they're coming from

throw them right in the mud with a real world language and all its imperfections and compromises imo, if they want purity they should major in math

Malcolm XML
Aug 8, 2009

I always knew it would end like this.

Zombywuf posted:

Hence asm, or logo. At least to the point where they get that a program is made up of statements which are executed one after the other.

or lambda calculus/turing machines where you don't have to worry about the actual computer

Janitor Prime
Jan 22, 2004

PC LOAD LETTER

What da fuck does that mean

Fun Shoe

qntm posted:

no lie, working out what order to explain things in is a pain

tight coupling in language concepts themselves, you can't explain any single thing without explaining four other things which both require understanding of the first thing

Yeah every intro java book I've seen changes the order around, but you're right that it complicates things so much.

prefect
Sep 11, 2001

No one, Woodhouse.
No one.




Dead Man’s Band
how many languages should your average computer science student learn in his classes?

Catalyst-proof
May 11, 2011

better waste some time with you

prefect posted:

how many languages should your average computer science student learn in his classes?

420

Squinty Applebottom
Jan 1, 2013

you should just major in math and then get hired and google stack overflow all day

Janitor Prime
Jan 22, 2004

PC LOAD LETTER

What da fuck does that mean

Fun Shoe

prefect posted:

how many languages should your average computer science student learn in his classes?

One imperative, one functional and one OO at least.

I remember having to learn Java, C, C++, ASM, Prolog, Scheme and ML between all my classes. On my own time for some other school projects that weren't tied to any language I learned some C# and Python.

GameCube
Nov 21, 2006

Hard NOP Life posted:

Prolog, Scheme and ML

these were the three we used in our "programming language concepts" class that also introduced DFAs and regexes and poo poo. so many fuckers complaining that they had to learn something new when "we already know java"

raminasi
Jan 25, 2005

a last drink with no ice

Cybernetic Vermin posted:

we used to do sml as the first language. that worked very nicely, very few moving parts (modules and all imperative stuff cut). ended up getting axed due to student pressure though, it was felt too useless in the real world (an argument i feel is out of place in the first programming course)

didn't scheme originally, as a teaching language, have "useless in the real world" as one of its design goals so that students wouldn't think they were learning anything but abstract problem solving? did i make that up?

FamDav
Mar 29, 2008
we did Java in intro (now Python), Java in data structures, and then upper divs were really whatever the hell the prof wanted, so there was C, C++, Ruby, Prolog, ML, Scheme, etc.

MononcQc
May 29, 2007

Cybernetic Vermin posted:

the software term "realtime" is misapplied a lot, it really should involve precise cyclecounts to ensure that systems always respond before some physical deadline. for trading systems (which I guess your system really is) one often says high-frequency when you want to minimize response times and the expenses get much greater with longer delays (e.g. it gets increasingly probable that one is missing an opportunity)

Yeah there's a lot of different uses for "real time": http://en.wikipedia.org/wiki/Real_time

I'm going with http://en.wikipedia.org/wiki/Real-time_computing which states:

quote:

Hard
Missing a deadline is a total system failure.
Firm
Infrequent deadline misses are tolerable, but may degrade the system's quality of service. The usefulness of a result is zero after its deadline.
Soft
The usefulness of a result degrades after its deadline, thereby degrading the system's quality of service.

Now in our case the deadline is not in cycles, but in milliseconds.

In our cases, for real time bidding, it's somewhere between 'firm' and 'soft' depending on the part of the system we're dealing with. Most of the time it would fall into the 'firm' area, where when we miss a deadline on a bid or a request, it's not worth sending it anyway. The boundary is fuzzy, though (who knows what them pesky networks do!) so we may still send responses after the perceived deadlines.

Hard real time under this definition would be a car's set of computers and event management. It's always my favorite example since I saw a talk on AUTOSAR testing, where car computer systems have to deal with signals such as air bag triggers. Because being milliseconds late means you may kill people, not triggering on time is a total system failure and the system is hard real time.

prefect
Sep 11, 2001

No one, Woodhouse.
No one.




Dead Man’s Band

MononcQc posted:

Hard real time under this definition would be a car's set of computers and event management. It's always my favorite example since I saw a talk on AUTOSAR testing, where car computer systems have to deal with signals such as air bag triggers. Because being milliseconds late means you may kill people, not triggering on time is a total system failure and the system is hard real time.

any idea what those guys program in?

FamDav
Mar 29, 2008

prefect posted:

any idea what those guys program in?

turbo pascal

JawnV6
Jul 4, 2004

So hot ...

OBAMA BIN LinkedIn posted:

i'm legit surprised there are still people who actually believe asm is a great language for beginners, i mean come the gently caress on.

MononcQc
May 29, 2007

prefect posted:

any idea what those guys program in?

I can't exactly remember. It was a great talk by Thomas Arts on Quickcheck, a property-based testing system. Basically, they're using Erlang (there was a Haskell version) and given set of properties to write models of the applications they're testing.

Then what they do is take that Erlang system, make it talk to C systems (I think) or computers behaving like black boxes, and based on the model, they generate thousands and thousands of possible cases. It's kind of the hybrid between fuzz testing and model validation.

Then they take the specifications as implemented by all the different manufacturers, and try to find what's good or wrong versus their models. They can then revise specific implementations, their own model, or the spec itself so the entire industry agrees on how their car computers should work for vital systems.

They also do this as a tiny team that replaces years and years of outsourced offshore Indians writing the tests.

The talk is: http://vimeo.com/26085628
and the slides are at: http://www.erlang-factory.com/upload/presentations/406/ThomasArts_ErlangFactoryLondon2011.pdf

E: better slides

MononcQc fucked around with this message at 20:10 on Feb 28, 2013

Catalyst-proof
May 11, 2011

better waste some time with you
quickcheck is so loving sexy i wish i had even a single bloody use for it

ultramiraculous
Nov 12, 2003

"No..."
Grimey Drawer

Bream posted:

Yeah, guys, why don't you kiss girls and get on github instead of all this nerd poo poo?

I personally like boys and my personal opinion is we should teach new people about sex by starting off with unlubricated anal sex. It's harder for everyone involved, but I think it's a valuable lesson.

ultramiraculous fucked around with this message at 21:55 on Feb 28, 2013

prefect
Sep 11, 2001

No one, Woodhouse.
No one.




Dead Man’s Band
and no condoms, because nobody wants to see that once you're in the industry

Adbot
ADBOT LOVES YOU

Juul-Whip
Mar 10, 2008

I've been exposed to a pretty big variety of languages in school but definitely in terms of total lines written Java is the main one.

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