APM: [Robotgroup] Simpler "Hello World" Demonstrated In C

jameschoate at austin.rr.com jameschoate at austin.rr.com
Wed Mar 17 08:13:16 PDT 2010


That's an excellent 'why' question. I think it has to do with three concepts: abstraction, indirection, & algorithmics.

Assembly is terrible at abstraction in that to build models of any level of complexity directly is just hard, it's why they invented assemblers and why people used to bitch about the DATA/POKE/PEEK data statements in BASIC (and their equivalent in other languages). The indirection aspect is about how easy it is to either modify or borrow a set of code snippets. Assembly can do that but if the individual modules get very big and you're not just super careful with your namespace (most assemblers have a pretty reduced namespace capability) you run into collisions. Finally, the most oft skipped power of higher level languages, the ability to create algorithmic instances without having to jump through hoops and write a monster book explaining the what and why-fors of the program. Algorithmics is probably the best differentiator between a competent programmer and a hack (and I don't mean hacker). The bottom line is if you don't understand and think algorithmically any program you write will be amateurish and any language you learn will always be under-utilized. If you do think algorithmically then picking up a language, just about any language, is measured in days to a couple of weeks. Anybody who asks "What language should I learn  next." has missed the fundamental point of languages to begin with.

As to what language to learn, the answer is multiple. If you can't write a basic shell script then you're crippled. If you can't write some basic glue code in Perl or Python then you're crippled. C is a great language to learn because it is -the- computer science language in the real world (never mind any ivory towers). C++ is the language to learn next. The reason being that the object oriented features address (to varying degrees of success) the memory and resource management limitations of C itself. If you can't write basic HTML and Javascript you're crippled because you're not going to have a firm grasp on the UI. Java is an excellent language to learn in parallel with C++ as a compare/contrast exercise to cement the grasping of concepts and implementations.

If you're looking at it from an employment/profession perspective then the question really becomes one of industry culture. Contact several companies that are producers in the field you're interested in and find out what they use day to day. A good example is scientific programming, you need to know FORTRAN and Python. FORTRAN has been the standard science programming language since the 50's. There is an absolutely monster library of FORMAT related material out there :) However, over the last few years Python has grown and the available tools have reached a critical mass. If you're going into Bioinformatics you better know Perl.

In all cases you need to know how to access and manipulate SQL through your language sets of choice.

---- Sam Onella <barythrin at yahoo.com> wrote: 
> That was always my problem and dislike when I first started C++ programming.  I was in highschool so I obtained the educational copy of Microsoft's Visual C++ I wrote a cli "Hello World" and it was something dumb like 192K.  I then went through the next tutorial creating a Windows GUI/template and putting hello world in that and it was 98K.  I had a nice wtf moment and read a bit on optimizing size, saw the linker options but then further reduction of code size reduces it to "why program C if all the tutorials always go back to assembly?".

--
 -- -- -- --
Venimus, Vidimus, Dolavimus

jameschoate at austin.rr.com
james.choate at g.austincc.edu
james.choate at twcable.com
h: 512-657-1279
w: 512-845-8989
www.ssz.com
http://www.twine.com/twine/1128gqhxn-dwr/solar-soyuz-zaibatsu
http://www.twine.com/twine/1178v3j0v-76w/confusion-research-center

Adapt, Adopt, Improvise
 -- -- -- --


More information about the Austin mailing list