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.
 
  • Locked thread
Malcolm XML
Aug 8, 2009

I always knew it would end like this.

coffeetable posted:

or hell maybe you actually are a Terry Tao-esque ubermensch and everything is easy for you. in that case shame you're without the good graces to realise not everyone's so lucky

terry tao seems super chill and his blog is cool

nobody wants to learn spice to blink a fuckin led

Adbot
ADBOT LOVES YOU

uG
Apr 23, 2003

by Ralp
who gives a poo poo about pointers if the alternative is using nodejs or whatever, just pass by value gently caress it. this poo poo is in the context of an arduino where you probably dont need to easily parse a XML document or string manipulation. you are making the LED blink on %40 or whatnot, the code isn't going to be that difficult to someone who ALREADY knows enough to do it in javascript.

coffeetable
Feb 5, 2006

TELL ME AGAIN HOW GREAT BRITAIN WOULD BE IF IT WAS RULED BY THE MERCILESS JACKBOOT OF PRINCE CHARLES

YES I DO TALK TO PLANTS ACTUALLY

Malcolm XML posted:

terry tao seems super chill and his blog is cool

running across gowers + then tao's stuff was what made 16yo me snap outta teenage ego and realise there are people who are straight-up better than me, nolo contendere. before that it was all "yeah but" bullshit.

he's dreamy :allears:

coffeetable
Feb 5, 2006

TELL ME AGAIN HOW GREAT BRITAIN WOULD BE IF IT WAS RULED BY THE MERCILESS JACKBOOT OF PRINCE CHARLES

YES I DO TALK TO PLANTS ACTUALLY

uG posted:

who gives a poo poo about pointers if the alternative is using nodejs or whatever, just pass by value gently caress it. this poo poo is in the context of an arduino where you probably dont need to easily parse a XML document or string manipulation. you are making the LED blink on %40 or whatnot, the code isn't going to be that difficult to someone who ALREADY knows enough to do it in javascript.

LED blinking is probably easier to get goin in assembly than it is in js, when you factor in the time taken to set the thing up. but the difficulty curve out from that point up to say general purpose IO or silly experiments with home automation would be vastly steeper in a next-to-the-metal language than it would be a nice managed environment.

im not gonna defend arduino'in in js or node.js specifically because frankly i dont know poo poo about them. what i will go to the hilt over is insisting that people work in C before they do anything else, cause that poo poo stinks of THE ONLY WAY TO LEARN IS THE WAY I LEARNT and THE ONLY REASON TO LEARN IS THE REASON I LEARNT

PrBacterio
Jul 19, 2000
speak for yourselves, I do all of my led-blinking in vhdl or verilog

BONGHITZ
Jan 1, 1970

coffeetable posted:

ps this is just spillover from the frothing rage i devolve into any time i see someone being mocked for poor mathematical ability

triplepost motherfuckers

despite all my rage, i am still just a sperg in a cage

JewKiller 3000
Nov 28, 2006

by Lowtax

coffeetable posted:

this is a terrible phrase. loving arithmetic "really isn't that hard", and yet there are multitudes of people from all walks of life who have immense difficulty with it. things are only easy when you've previously developed processes and experience that can be readily transferred across to the new topic. guess what: if you've never had to rigorously reason about abstract structures before, pointers are a brick to the face.

it's saying crap like that which kills people's interest in technical disciplines before they even begin, because they take their first failures as an indication that they're "not smart enough". really, it's just that the wankers harping on about how easy things are had their own comparable failures long ago or in a different area, and recognising that reality just can't trump acting like a condescending bastard, can it?

i agree with the sentiment of your post, but i don't buy the pointers example. i've never understood why pointers are such a weedout point for people learning C. there's no abstract math, these are concrete parts of the computer. an array of contiguous bytes in memory is literally the simplest data structure possible. a pointer is just an index into this array. to visualize, you can take a sample program and trace through it, drawing the boxes and arrows representing pointers and base values. we're not even doing algebra, the only math necessary is adding and subtracting memory addresses.

besides, the above is hardly unique to C. java is doing the same poo poo with a stack and heap and pointers, it just hides the * and the malloc/free from you. p-langs like python hide even more, but under the hood you still have memory and pointers to values. as long as the higher level abstractions are appropriate, you don't have to think about things at a C level. but when an abstraction doesn't work as expected, you're gonna end up moving toward the C level anyway, where you start thinking about memory and other implementation details. at this stage, it helps to actually know some C, since it's a common language that programmers use to communicate at that level. you can probably also just go read the source code, which is likely C.

imo this is what separates programming amateurs from professionals. you can get a hell of a lot done these days by just copy-pasting javascript snippets, and that gives you the satisfaction of browser blinkenlights with very little mental startup cost. but when the poo poo stops working right, do you have the underlying knowledge to reason about WHY? or are you just gonna paste the error into google and look for more snippets? that may be perfectly appropriate when programming skill is not your goal, but i would never hire such a person as a software engineer.

of course, there are many other ways to learn than the way i learned. but my way has worked out very well for me, and it seems right to at least try to help others to have a similar experience! and even if you don't learn it the way i did, you're gonna have to learn it somehow anyway, if you want to succeed in the field.

edit holy poo poo wall of text

Base Emitter
Apr 1, 2012

?

JewKiller 3000 posted:

i agree with the sentiment of your post, but i don't buy the pointers example. i've never understood why pointers are such a weedout point for people learning C.

how old are you

my theory is people who grew up when learning assembly was a normal thing nerdy kids did will understand pointers (addresses) pretty easily and not so much otherwise.

JewKiller 3000
Nov 28, 2006

by Lowtax
i'm 27 and i actually started with ti-basic (sorry dijkstra!). never really got into assembly programming. but i remember teachers in java classes (they taught java before C) drawing those stack and heap diagrams, tracing through java programs and talking about pointers. you can't just abstract the computer away

uG
Apr 23, 2003

by Ralp
ive never used assembly nor unserstand it, am under 30, am a sex haver, and have no problems understanding pointers

Base Emitter
Apr 1, 2012

?
welp gently caress that theory then, i got nothin

Morkai
May 2, 2004

aaag babbys
pointers arent hard. i also dont know asm, and do have sex. i do have some
c background though. if pointers are hard maybe its time to do some other profession, like a trade...

coffeetable
Feb 5, 2006

TELL ME AGAIN HOW GREAT BRITAIN WOULD BE IF IT WAS RULED BY THE MERCILESS JACKBOOT OF PRINCE CHARLES

YES I DO TALK TO PLANTS ACTUALLY

so this is qualified by the fact that i never had trouble with pointers, but from chatting to a whole load of people who did/do: the difficulty with pointers seems to be that they're the first concept where you need an explicit model in your head of what the internals of the system are doing. up until then, treating a computer as a black box and relying on your monkeybrain's pattern recognition can lead to some painful experiences, but it works. the typical example i use of this black-box kind of learning is "public static void main" in CS101. the students don't have a drat clue what it means, but the lil' heuristical learnin engine in their heads is sufficient to get them to use it correctly for the duration of the course.

anyway the process of developing these explicit mental models comes so naturally to some people (probs most of this thread) that it's hard to imagine how it could be difficult. you just piece information and evidence together and if you persevere long enough it makes sense, right? but the thing is if you don't have a curious streak, it's very easy to have lived a life where you have never had to do that. come that pointers class freshman year, the required mental-modelling routines simply aren't there.

moving on to languages themselves, i agree it's really valuable to know C. but it's not mandatory. if a newbie is the kind of person who much prefers results over understanding how things work, or worse if they're the kind of person who's never developed the mental models i was talking about, C is gonna be limiting and frustrating and painful, and stands a good chance of putting the newbie off permanently. they might run into hurdles with p-langs, but they'll dutifully ask their nerd officemate or stackoverflow, and a solution fragment will be delivered in course. they might take the scenic route, but they'll still git 'r done.

by your "amateurs from professionals" line, im guessing you dont think it's that's a wholly bad thing if those kinds of programmers are put off. which if all you care about is the quality of code you personally have to work with, i guess is fair enough. in my mind however, even if they can't program well, they can still program. and society seems to consider even that limited ability pretty valuable, as evidenced by the number of such people who are - despite your elitism - software professionals.

what's more, i can think of few better ways to develop those mental-modelling skills than programming. and i consider that to be pretty valuable for society too.

coffeetable fucked around with this message at 00:52 on Oct 27, 2013

Notorious b.s.d.
Jan 25, 2003

by Reene

Cocoa Crispies posted:

lots of poo poo works better for tasks it wasn't designed for: java ended up being awful for applets and set-top boxes, but it's still used
lol whut

java is by far the most popular set top box platform in the world. every ps3 and bluray player has a java runtime, just about every bluray disc contains java apps.

java runs on 80% of smartphones now

applets worked completely 100% perfectly if you used sun hotjava. in hotjava, applets were so fast and low-overhead you could use them to replace animated gifs.

where applets started sucking was when netscape tried to jam the JVM into an NPAPI plugin. that was a disaster. (sun reacted to netscape's fuckup with java web start, and that poo poo works pretty well. tons of enterprise poo poo uses jws)

JewKiller 3000
Nov 28, 2006

by Lowtax

coffeetable posted:

by your "amateurs from professionals" line, im guessing you dont think it's that's a wholly bad thing if those kinds of programmers are put off. which if all you care about is the quality of code you personally have to work with, i guess is fair enough. in my mind however, even if they can't program well, they can still program. and society seems to consider even that limited ability pretty valuable, as evidenced by the number of such people who are - despite your elitism - software professionals.

first of all i generally agree with your wordsreply to my wordspost :)

in the quoted part, you're basically right that i'm concerned about the people i work with. not just the quality of their code, but their ability to reason as i described, which is an important part of the job. i have no problem with people having limited programming ability, especially when that's all they need to get THEIR job done. if you're a biologist and you just need to write a few simple python scripts to automate some software packages you use, that's great, have at the python! i don't expect you to be an expert in biology AND programming. but i don't think it's right to call such a person a software professional, either. they may be the most informed among their group, but i would never pick up a copy of o'reilly's introduction to biology, read it, and dare to call myself a biologist

edit: VVV yeah what he said too, and the guy below him

JewKiller 3000 fucked around with this message at 01:09 on Oct 27, 2013

Morkai
May 2, 2004

aaag babbys
to be perfectly frank, i would much prefer if we didnt have a bunch of plangers and the like out there "architecting" and "designing" and "developing", because they dont have a strong enough background in fundamentals to know when and why to do needful things. i say this as a hobby programmer/hacker for 15+ years who turned my hobby into a career. i am not a cs grad, and i couldnt do trig to save my life. but i know what it means to use generics and interfaces and abstracts, and i write business software not novel algos.

Phobeste
Apr 9, 2006

never, like, count out Touchdown Tom, man
guys i'm really 100% not saying that people who use arduino or rasbpi or nodejs on a micro are idiot shitlords who should commit suicide instantly. i think those things are cool and even though i'm a "professional" i still find myself using them every so often. what i am saying is that they're nowhere close to being a 100% replacement for c because it's really easy to get to a place where you need things that arduino or rasbpi's can't do. the problem is, when you get to those points, there is usually not a stack overflow for you, and whatever answers ou can find (app notes, datasheet notes) are going to be in c and asm.

my point isn't that everybody should learn c and ify ou don't know it you should be ashamed, it's that if your toy project reaches a certain level of complexity it's going to be required anyway, so you might as well bite the bullet. this might not be necessary in 20 years any more than it's currently necessary to write c code before you can start doing javascript, but right nwo in the embedded world, if you think you can start doing things of even medium complexity without learning c you're fooling yourself.

Phobeste
Apr 9, 2006

never, like, count out Touchdown Tom, man
also obviously i cant generalize any of this to basically anything that runs linux or above, if ou see what im saying. although i will note that it's surprisingly easy to get to a place in embedded linux where you're writing kernel drivers for this one manufacturer's stupid loving special snowflake spi implementation, ugh



also the other thing is that embedded programming isn't that hard. it's just like regular programming but youhave to look up more magic incantations and the documentation is universally awful and occasionally flat out wrong which is funny since it's from the people who designed the silicon. embedded workflow works like this:

-figure out what you want to do
-look at a list of things that exist on your chosen chip and decide which ones you want to use to accomplish your goals from step 1
-look at the datasheet or manufacturer app notes until it tells you exactly how to do it
-do that
-spend the next two months painstakingly grinding your testicles into fine paste unless youhave a jtag and an ide that will work with it


oh actually that's another gripe i have with arduino: jesus loving christ everything about their loving software and hardware stack is so unbelievably stupidly hard to use, amateurish, and unbelievably fragile. ho lee gently caress. no debuggign options. no code completion. mysterious messing aroudn with the code you write (see setup and loop and addign librareis, which is mysteriously somthing other than a normal include). awful, terse error messages. also the chips they use for ftdi on those boards seems to fail a lot for me, or maybe i just magically kill them who knows.

PrBacterio
Jul 19, 2000
look at all of these walls of text
look at all of these seriousposts
truly, this IS the terrible programmer safe zone/hideout

Doc Block
Apr 15, 2003
Fun Shoe

Phobeste posted:

oh actually that's another gripe i have with arduino: jesus loving christ everything about their loving software and hardware stack is so unbelievably stupidly hard to use, amateurish, and unbelievably fragile. ho lee gently caress. no debuggign options. no code completion. mysterious messing aroudn with the code you write (see setup and loop and addign librareis, which is mysteriously somthing other than a normal include). awful, terse error messages. also the chips they use for ftdi on those boards seems to fail a lot for me, or maybe i just magically kill them who knows.

yeah, the arduino "language" is the one used by the Wire+Processing boards, and is pretty bad. really just an extra preprocessor for gcc++ with a bad IDE.

Bloody
Mar 3, 2013

Phobeste posted:

Word. I'm kinda new too, not as pro as bloody or Otto Skirzeny but I got me some opinions anyway

holy poo poo i have yoscred

Bloody
Mar 3, 2013

lotta effortposts surrounding baby's first embedded thing and the points around how all your random bespoke nodejs ruby python microcontroller crap are kinda missing the point: it's not that blinkin an LED is not hard, it's that blinkin an LED is trivial. there's almost nothing to abstract away. you have a pin. that pin goes high, the led goes off (lol). that pin goes low, the led goes on (lol again). write that in w/e lang you want - the final code should be the same ~4 opcodes regardless.

Bloody
Mar 3, 2013

it's like debating the merits of doing "hello world" in various languages except the differences are even smaller

uG
Apr 23, 2003

by Ralp
both sides already agreed to that but i know someone of your yoscred doesnt read threads

double sulk
Jul 2, 2010

grep-it ralph

double sulk
Jul 2, 2010

IM GONNA GREP IT

suffix
Jul 27, 2013

Wheeee!
it's all a moot point now that we can do embedded programming ~in the cloud~
http://mbed.org/handbook/mbed-Compiler :yayclod:

MononcQc
May 29, 2007

Morkai posted:

to be perfectly frank, i would much prefer if we didnt have a bunch of plangers and the like out there "architecting" and "designing" and "developing", because they dont have a strong enough background in fundamentals to know when and why to do needful things. i say this as a hobby programmer/hacker for 15+ years who turned my hobby into a career. i am not a cs grad, and i couldnt do trig to save my life. but i know what it means to use generics and interfaces and abstracts, and i write business software not novel algos.

The more it goes, the more I feel that making assumptions about what the one true way or methodology, language, or paradigm should be, is all garbage.

Programs and software solutions can be CPU, IO, or Memory bound at the simplest levels, and that already impacts the poo poo you have, but then you have additional constraints for budget, development time, running time, and general ideas about capacity, requirements for tests, maintainability, safety and what have you that all compound into these decisions, while also adding the problem domain to that stack.

There's a shitload of cases where p-lang like solutions are fully appropriate given the constraints and priorities, no matter what angry assholes online may think. The opposite is also pretty much true, where Java users can be seen both as morons or reasonable people.

But it's fun for devs of all kind to think "well the kind of programming I do is certainly representative of what the state of the world is and by golly your solution doesn't fit what I usually do! you're probably an idiot!" and get a little self-indulgent feeling of superiority, so I don't expect it to change any time soon.

MononcQc
May 29, 2007

As a toaster programmer who loves to deal with 16k of memory, I think that your script to read a weather database for a desktop widget is...

As a server programmer who has 64GB of memory and 18 cores for a single app, I don't see why you couldn't use these 7 frameworks for different layers when writing a phone app because...

and so on

Notorious b.s.d.
Jan 25, 2003

by Reene

MononcQc posted:

As a toaster programmer who loves to deal with 16k of memory, I think that your script to read a weather database for a desktop widget is...

As a server programmer who has 64GB of memory and 18 cores for a single app, I don't see why you couldn't use these 7 frameworks for different layers when writing a phone app because...

and so on

modern android phones have as much memory and compute power as a typical unix application server in the 1990s. and they run unix.

in 2013 expecting a half a gigabyte of RAM, a pretty complete j2se, and the equivalent of two 400 MHz UltraSPARC cores is totally reasonable in an "embedded" space

Notorious b.s.d.
Jan 25, 2003

by Reene
16k toaster programmers are a dying breed because hardware has gotten so cheap that the plastic case for your product cost more than the electronics, because you needed a distinctive shape to stick out on a shelf full of commodity gear and that shape changes with the whims of the marketing team

also modern products iterate so fast there's no time to amortize 16k-toaster-programmer costs out across a product lifetime. linksys shits out multiple revisions a year now. products might change their guts based only on supply chain considerations.

an "embedded linux" image that expects 32M of RAM is a lot easier to tweak for new hardware than your 16k-toaster-program

Notorious b.s.d. fucked around with this message at 04:50 on Oct 27, 2013

MononcQc
May 29, 2007

Way to get the point.

Doc Block
Apr 15, 2003
Fun Shoe
:lol: u got rms'ed

Notorious b.s.d.
Jan 25, 2003

by Reene

MononcQc posted:

Way to get the point.

I get your point and I refute your naive relativism.

Times change.

Doc Block
Apr 15, 2003
Fun Shoe

Notorious b.s.d. posted:

I get your point and I refute your naive relativism.

Times change.

you're still RMSing.

"guys he said open source instead of free software! let me ignore his point and sperg out about that instead!"

"guys he said that people still employ embedded programmers to work on little uCs with 16k flash memory! let me ignore his overall point and instead go on about wifi router SoCs!"

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

Notorious b.s.d. posted:

modern android phones have as much memory and compute power as a typical unix application server in the 1990s. and they run unix.

in 2013 expecting a half a gigabyte of RAM, a pretty complete j2se, and the equivalent of two 400 MHz UltraSPARC cores is totally reasonable in an "embedded" space

I wonder how a Heroku dyno compares to an iPhone 5S

Mr SuperAwesome
Apr 6, 2011

im from the bad post police, and i'm afraid i have bad news
i learned programmin on C and it was awful what a loving ancient POS

Mr SuperAwesome
Apr 6, 2011

im from the bad post police, and i'm afraid i have bad news
learn C#, its easy good modern and not a plang hth

Mr SuperAwesome
Apr 6, 2011

im from the bad post police, and i'm afraid i have bad news
learning in C has really improved me as a programmer in the sense of "dont use loving C use a sensible language and tools that make your life easy because thats the important bit"

striking a good balance of abstractions vs lovely slow and useless is the key and c# does this best

Adbot
ADBOT LOVES YOU

computer parts
Nov 18, 2010

PLEASE CLAP

Mr SuperAwesome posted:

learning in C has really improved me as a programmer in the sense of "dont use loving C use a sensible language and tools that make your life easy because thats the important bit"

striking a good balance of abstractions vs lovely slow and useless is the key and c# does this best

i dunno, i'm not really a programmer (the most i have to do is some python scripting poo poo) but after taking a C class I understood the underlying concepts a lot better than C++.

of course that could just be because computer science majors/instructors are the most autistic libertarian types in the world and i lucked out in my C class by having a dude who got his bachelor's degree before C was invented.

  • Locked thread