Welcome, Guest. Please login or register.
April 28, 2024, 01:41:29 AM

Login with username, password and session length

Search:     Advanced search
we're back, baby
*
Home Help Search Login Register
f13.net  |  f13.net General Forums  |  General Discussion  |  Topic: What programming languages should I learn? 0 Members and 1 Guest are viewing this topic.
Pages: [1] 2 3 Go Down Print
Author Topic: What programming languages should I learn?  (Read 18868 times)
CharlieMopps
Terracotta Army
Posts: 837


on: October 12, 2007, 04:25:15 AM

I've decided to go back to school in the spring for programming. This networking thing sucks, I'm tired of sitting in a fucking chair wondering which jackass Backhoe-disconnected my fiberoptic trunk without doing a locate.

So what languages should I do? Looks like everything geared towards web development now, and they FORCE me to learn VB first. Is C# the biggy now? Come on dev guys, speak up, help me get out of my crappy desk job and into a new one.


Shavnir
Terracotta Army
Posts: 330


Reply #1 on: October 12, 2007, 05:00:03 AM

BrainFuck, LISP and lojban.

Seriously though you probably want to start with either C++ or Java then branch into web programming.  You want to have an okay grasp of OOD before you go into it I think.
Signe
Terracotta Army
Posts: 18942

Muse.


Reply #2 on: October 12, 2007, 05:10:21 AM

Miranda and Smalltalk.  You can pretend you're dating.

My Sig Image: hath rid itself of this mortal coil.
CharlieMopps
Terracotta Army
Posts: 837


Reply #3 on: October 12, 2007, 05:21:53 AM


Seriously though you probably want to start with either C++ or Java then branch into web programming.  You want to have an okay grasp of OOD before you go into it I think.

If I know C# will I know, at least in general C++? I don't think there's a C++ class I can take where I'm going. They have Cobol though... lol
Selby
Terracotta Army
Posts: 2963


Reply #4 on: October 12, 2007, 05:39:36 AM

VB isn't that bad, helps you make nice and nifty\cute programs.  I programmed professionally in it for 3 years.  The only problem I ever had with it was that you can't do direct memory access like you can in C, but pretty much anything else you want to do you can in VB.  If I were you, I'd try and learn something like C or Pascal (purely for OOD\training purposes) on my own without expecting them to teach you anything that really matters in school.  C++ was the big thing when I started in school (1998) and then they switched to VB about 2 years after I was done with the intro stuff.  In school once you got past the first 2 classes you then went into ASM, Java, and then maybe Verilog or VHDL (depending on electives\requirement flavors of the month) and then finally went into theory where you never really wrote another "real" program again.  After my 2nd year I never programmed in school again in the computer science department.

But seriously, once you know the concepts behind OOD and other basic programmer skills, the language is mostly irrelevant and can be almost interchangeable.  Don't focus too much on what language they teach you as it will either be obsolete once you get out of school or your employer will want you to program in something else.
Trippy
Administrator
Posts: 23623


Reply #5 on: October 12, 2007, 05:42:00 AM

Learn Java first. If your school is Microsoft-centric (and it sounds like it is if they teach VB first) find another school unless you are okay with seriously gimping your future job choices in Web development.
Jeff Kelly
Terracotta Army
Posts: 6921

I'm an apathetic, hedonistic, utilitarian, nihilistic existentialist.


Reply #6 on: October 12, 2007, 06:02:58 AM

Well it depends a bit on what you want to do.

Basically programming is by no means arcane magic and I seriously never understood the focus on specific languages that many colleges nowadays have.

If you know and understand the underlying principles of certain language groups then learning new languages is easy.

So given enough time and interest I'd suggest you learn the principles of procedural, functional and object oriented languages and choose a popular language from each of these classes. Then any new language that will be the next hot thing in the future will not be a problem for you.

A good OO-Language could be Java or C++ or C#, functional languages would be Haskell, Scheme, Common Lisp and a few others and for procedural languages you could use C any Basic dialect out there and lots of script languages.

This would be the academic answer. Learn the underlying principles and you can master any language.

If time, money or interest doesn't allow this I'd suggest going with Java, C# or one of the more popular scripting languages out there. Windows decelopment has largely switched to C# (C++ is used for device drivers and hardware specific stuff nowadays or games) and java has a huge stake in web development.

I'd keep away from any school that uses VB as an Introductory course however.
CharlieMopps
Terracotta Army
Posts: 837


Reply #7 on: October 12, 2007, 06:26:57 AM

I'd keep away from any school that uses VB as an Introductory course however.

hrm... I don't really have a choice. lol
The only other option I have is the University system... and they wont let me in due to excesses in my youth... lol

I will look around though. See what I can do.

As far as your description of the different type of programming goes... THANKS! I kind of have a bearing as to where I'm at now. I get procedural. That seems to be what I've been doing for a few years now. I've never even heard of the functional languages you described. Looks like I need to do more research!
Jeff Kelly
Terracotta Army
Posts: 6921

I'm an apathetic, hedonistic, utilitarian, nihilistic existentialist.


Reply #8 on: October 12, 2007, 06:38:18 AM

I've never even heard of the functional languages you described. Looks like I need to do more research!

I'd put this on a low priority however. Most of these types of languages are used in speciality fields of computer science like statistics or financial analysis.

It is however a wholly different concept than using a procedural language so I'd at least read a bit of the introductory material on the matter.

Procedural or object oriented languages are far more common and used in the majority of tasks.

The wikipedia entry is a good start

http://en.wikipedia.org/wiki/Functional_languages
UD_Delt
Terracotta Army
Posts: 999


WWW
Reply #9 on: October 12, 2007, 07:02:06 AM

Just pick a language and learn the fundamentals as already mentioned.

Once you have the basics you can pick up any programming language in a few weeks just by playing with it. It's all just syntax at that point.

There's also lots of other IT possibilities other than being a dev grunt although that is a good place to start. If you want the real money you have to look at EAI, ETL, ERP application development or management.

Honestly the easiest path would probably be to just jump into an ERP tool like PeopleSoft or SAP and learn their proprietary code to do customizations. Tons of money there if you're willing to travel and work as a contractor.
Salamok
Terracotta Army
Posts: 2803


Reply #10 on: October 12, 2007, 07:21:55 AM


Seriously though you probably want to start with either C++ or Java then branch into web programming.  You want to have an okay grasp of OOD before you go into it I think.

If I know C# will I know, at least in general C++? I don't think there's a C++ class I can take where I'm going. They have Cobol though... lol

Take a semester of CoBOL for sure, it will give you a new appreciation for defining variables.  If you want to go into web dev then I would strongly suggest going the LAMP route over the microsoft route.  Either way you will want to pick up some javascript though.
Trippy
Administrator
Posts: 23623


Reply #11 on: October 12, 2007, 07:25:03 AM

I've never even heard of the functional languages you described. Looks like I need to do more research!
I'd put this on a low priority however. Most of these types of languages are used in speciality fields of computer science like statistics or financial analysis.

It is however a wholly different concept than using a procedural language so I'd at least read a bit of the introductory material on the matter.
Functional languages are gaining in popularity beyond the "language snob" crowd. Haskell was mentioned above and there's Erlang with its strong concurrency features which is becoming more important with multi-core/multi-threaded CPUs. Ruby can also be written in a functional style and Python is gaining functional features as well.
Trippy
Administrator
Posts: 23623


Reply #12 on: October 12, 2007, 07:25:41 AM

Don't bother with COBOL.
Murgos
Terracotta Army
Posts: 7474


Reply #13 on: October 12, 2007, 07:43:13 AM

I agree with everything said above.  Except the cobol bit.

If you are going to a real university with a real engineering program and actually want to know what the hell you are doing when you get out I would suggest that you actually try and pay attention during data structures and algorithms courses.  Take an FPGA course as well so you get an appreciation for what the hardware is actually doing (Can aid debugging immensely).

From an actual making money point of view learning ANSI C is probably a dead end (not really but there are a LOT of very good C coders already in those positions), from an understanding what the hell everything is doing at a fundamental level though it's golden.  The problem is that it takes years of work with ANSI C to actually be any good at it and I would never do a complex project on a limited time schedule in it given a choice.

Oh, and learn to dork around in Perl.  Knowing what to do in Perl (or python, ruby etc...) and what not to do in Perl can save a lot of time.

"You have all recieved youre last warning. I am in the process of currently tracking all of youre ips and pinging your home adressess. you should not have commencemed a war with me" - Aaron Rayburn
CharlieMopps
Terracotta Army
Posts: 837


Reply #14 on: October 12, 2007, 07:52:34 AM

Don't bother with COBOL.


hehe, I know.

What really sucks is all the worthless crap I'm going to have to take. Carers in IT? WTF
Righ
Terracotta Army
Posts: 6542

Teaching the world Google-fu one broken dream at a time.


Reply #15 on: October 12, 2007, 08:11:18 AM

What really sucks is all the worthless crap I'm going to have to take.

So cut out the whole education thing altogether. Just apply for a job and tell them that you've coded in some desired language before and that you can start in a week. Then pick up a book and learn the language. Bluff your way through difficult questions at work, and bring stuff home with you in the evenings. Within a couple of weeks, if you're cut out for coding, you'll be considered more brilliant than any of the other bozos that you work with. Yes, there are really that many bad or mediocre programmers out there.

The camera adds a thousand barrels. - Steven Colbert
UD_Delt
Terracotta Army
Posts: 999


WWW
Reply #16 on: October 12, 2007, 08:19:18 AM

So cut out the whole education thing altogether. Just apply for a job and tell them that you've coded in some desired language before and that you can start in a week. Then pick up a book and learn the language. Bluff your way through difficult questions at work, and bring stuff home with you in the evenings. Within a couple of weeks, if you're cut out for coding, you'll be considered more brilliant than any of the other bozos that you work with. Yes, there are really that many bad or mediocre programmers out there.


Hehe if you're willing to do that and learn PeopleCode I'll hire you right now. Besides if you don't have a college degree I can pay you less.  evil
Signe
Terracotta Army
Posts: 18942

Muse.


Reply #17 on: October 12, 2007, 08:23:39 AM

Don't bother with COBOL.


That's not true!  You never know when we might have another Y2K!  There could be a millennium right around the corner!

My Sig Image: hath rid itself of this mortal coil.
naum
Terracotta Army
Posts: 4262


WWW
Reply #18 on: October 12, 2007, 08:27:23 AM

As a professional programmer with ~25 years of experience here are my recommendations:

* C - everything ultimately is written in C… …or advance right to C++ or Objective-C (NEXT Smalltalk-ish variant)… …and you need to know how the machine works

* Lisp|Scheme|OtherFunctionalLanguage -  even if you don't use, it is good to wrap your brain around, especially for the algorithmic problem solving… …many computing exercises|problems naturally fit better there, and ultimately, can wield most compact and powerful code bang…

* Ruby|Python|$*Nix ShellScriptingLanguage - scripting languages for web applications and/or embedded scripting… …now, don't bother w/Perl|PHP unless needed (i.e., existing codebase)

Beyond that, "language" learning should not be objective of a beginning programmer. Learning how to think algorithmically and how to attack computing tasks. How to arrange code so it all fits together. How to interpret API documentation. In that overall quest, you should learn many languages. Problem with much of coder training is that is focused on a particular platform and language instead of concepts as a whole…

Too many developers I see are trained only in a specific language create horrible and outright offensive messes of code… …even skilled authors splatter instructional textbooks with terrible examples, code that might get the job done, but is woefully inelegant, overly expansive and nothing you'd to write in RL application, but yet applications abound with such turds. The knack against PHP is primarily due to this factor, as many PHP coders are "drive by" developers…

Stay away from these mind warping things:

* COBOL - I used to code COBOL along with all other sorts of Mainframe Code-Doo including REXX, esoteric IBM TSO stuff, other "archaic" mainframe languages like WFL, Algol, etc.… …there is still a lot of COBOL code in existence in 2007, everytime  you use your charge/debit/credit card, book a flight, are billed for electricity, etc… …it''s COBOL though most of the actual "programming" is done by H1-B workers or outsourced workers in Malaysia or India…

* JAVA - the 21st century "COBOL"

* VB/and other associated M$ evolution - will no doubt get flamed for this, but I'd rather not be tied to inelegant, crufty single proprietary platform with ridiculous licensing bureaucracy management…

"Should the batman kill Joker because it would save more lives?" is a fundamentally different question from "should the batman have a bunch of machineguns that go BATBATBATBATBAT because its totally cool?". ~Goumindong
zubey
Terracotta Army
Posts: 33


Reply #19 on: October 12, 2007, 08:31:15 AM

FWIW, I think Java and C# are the two big ones in IT right now, if you're looking for the biggest job market.

Learn object oriented design first.  (15 years in IT here)
Soln
Terracotta Army
Posts: 4737

the opportunity for evil is just delicious


Reply #20 on: October 12, 2007, 08:42:22 AM

honestly, I would figure out first the kind of vertical in sw I'd want to work in -- consumer, entreprise, firmware apps etc. -- then choose. 

For immediate employment, Java, AJAX, XML, with a side knowledge of Rails and JSON and writing WSDL's.

For longer term and less consumery, C++ (STL, compiled under gcc), strong XML (so you can write brokers for the web apps people).  Helps also if you learn data driven techniques too.  For example, how to write a good and reliable caching server.  The people who can do this focus on integration activites -- translating protocols, writing gateways -- and they have the most job security and compensation.  Good luck.
Morat20
Terracotta Army
Posts: 18529


Reply #21 on: October 12, 2007, 09:24:25 AM

If you don't want the degree -- C# or Java. If you know one, learning the other (or any OOP language) is simple. But you need the basic OOP principles -- learn them and use them. Pick up some web development -- a basic DB design course (God kills a kitten when you design in 1st Normal Form), and something like PHP or ASP.NET will get you the basics of what you need. (How DB's work, how to create simple schema, how to connect to it with a web front end, the basic program flow for web pages, things like server and client side scripting and sessions, basics of security, etc).

Everything after that is just specific application and experience -- experience is what generally gets you to understand what is good design and what isn't. An actual degree teaches some of it, but in my experience most people don't really follow it until they've been doing it professionally for a few years. Until you've had to rewrite a ton of yours (or someone else's code) because they couldn't be arsed to make it modular, or because they had a ridiculously stupid DB schema, or in short it took you about five times longer to fix something that wouldn't have been a problem if they just designed it properly in the first place....

As to a degree, I would note that the actual degree isn't useless. Someone else already mentioned an algorithms classes and data structures classes (what you learn there comes in useful), and stuff like OS classes give you a real solid foundation for threaded programs (most OS classes teach 'How an OS works' and generally makes you simulate one. You learn concurrency and locking fast). College-level DB classes are generally pretty abstract, but I've used it to redesign poorly thought  out DB's (never bothered with the math part, I admit). You get a solid ground in algorithms and decent design principles, but as I noted above -- most people don't really apply it until they get bitten by it. 

Most of what you get out of, say, a BS in Computer Science is some practice. "Design a simple web page". "Design a simple database scheme". "Do this with threading and locking". "Do that with sockets". "Design a GUI for this". "Learn another language, so you realize it's pretty much the old language with a slightly different syntax". There's a lot of classes that aren't relevent, although if you already have a BS in another field you can at least skip the basic sciences, histories, and all that.

And a lot of jobs require "BS or X years relevant experience" -- depending on what you do now, might be worth it.
Yegolev
Moderator
Posts: 24440

2/10 WOULD NOT INGEST


WWW
Reply #22 on: October 12, 2007, 09:32:01 AM

I'll second the ERP idea.  Apparently you can be a complete moron with a tenuous grasp of English and be paid enormous sums as a SAP BASIS technician.

Why am I homeless?  Why do all you motherfuckers need homes is the real question.
They called it The Prayer, its answer was law
Mommy come back 'cause the water's all gone
UD_Delt
Terracotta Army
Posts: 999


WWW
Reply #23 on: October 12, 2007, 09:50:49 AM

I'll second the ERP idea.  Apparently you can be a complete moron with a tenuous grasp of English and be paid enormous sums as a SAP BASIS technician.

FYI... we pay the exact people you described (or at least their firm) about $85/hour, although we burn through that type of person quickly. We're forced into 4 week minimum contracts and only about 1 in 3 make it past 4 weeks.

If you have a good grasp of the English language (but are still a moron) you jump up to $115-$125 per hour.

If you actually know what you are doing regardless of your grasp of the language you'd go for $125 - $150 an hour.

If you work for Oracle or a select few of the top tier consulting firms you jump up to $185+ per hour.




Speaking of IT stuff anyone else going to the Business Objects user conference in Orlando next week?
naum
Terracotta Army
Posts: 4262


WWW
Reply #24 on: October 12, 2007, 09:53:17 AM

I'll second the ERP idea.  Apparently you can be a complete moron with a tenuous grasp of English and be paid enormous sums as a SAP BASIS technician.

FYI... we pay the exact people you described (or at least their firm) about $85/hour, although we burn through that type of person quickly. We're forced into 4 week minimum contracts and only about 1 in 3 make it past 4 weeks.

If you have a good grasp of the English language (but are still a moron) you jump up to $115-$125 per hour.

If you actually know what you are doing regardless of your grasp of the language you'd go for $125 - $150 an hour.

If you work for Oracle or a select few of the top tier consulting firms you jump up to $185+ per hour.




Speaking of IT stuff anyone else going to the Business Objects user conference in Orlando next week?

And the resultant system will be a complete clusterfuck POS… …but yes, a killing will be made on billings…

"Should the batman kill Joker because it would save more lives?" is a fundamentally different question from "should the batman have a bunch of machineguns that go BATBATBATBATBAT because its totally cool?". ~Goumindong
Krakrok
Terracotta Army
Posts: 2189


Reply #25 on: October 12, 2007, 09:54:54 AM


I charge those prices to write ASP.
Yegolev
Moderator
Posts: 24440

2/10 WOULD NOT INGEST


WWW
Reply #26 on: October 12, 2007, 09:55:17 AM

If I get sent anywhere, it will be Cincinatti.  I am not sure if it is a move up from Carlstadt, NJ... but I hear that it's not.

@naum: You would be surprised at what can be done with enough contractors and OSS notes.  Enjoy your soda!

Why am I homeless?  Why do all you motherfuckers need homes is the real question.
They called it The Prayer, its answer was law
Mommy come back 'cause the water's all gone
CharlieMopps
Terracotta Army
Posts: 837


Reply #27 on: October 12, 2007, 09:55:36 AM


Hehe if you're willing to do that and learn PeopleCode I'll hire you right now. Besides if you don't have a college degree I can pay you less.  evil

pfft... if you were near me, I'd be all over that. But moving to Ohio? I'd need a lot of cash for that. Ironically, one of the sites I take care of is right outside Cleavland. Some of your traffic might pass over my network =D
Righ
Terracotta Army
Posts: 6542

Teaching the world Google-fu one broken dream at a time.


Reply #28 on: October 12, 2007, 11:35:16 AM

If I get sent anywhere, it will be Cincinatti.  I am not sure if it is a move up from Carlstadt, NJ... but I hear that it's not.

You're in Carlstadt? That really is a miserable shithole.

The camera adds a thousand barrels. - Steven Colbert
Yegolev
Moderator
Posts: 24440

2/10 WOULD NOT INGEST


WWW
Reply #29 on: October 12, 2007, 11:55:40 AM

If I get sent anywhere, it will be Cincinatti.  I am not sure if it is a move up from Carlstadt, NJ... but I hear that it's not.

You're in Carlstadt? That really is a miserable shithole.

Oh, fuck no.  But a SunGard facility is.  We're letting that contract lapse, though.

I hear bad things about Cinncinnatti.

Why am I homeless?  Why do all you motherfuckers need homes is the real question.
They called it The Prayer, its answer was law
Mommy come back 'cause the water's all gone
Righ
Terracotta Army
Posts: 6542

Teaching the world Google-fu one broken dream at a time.


Reply #30 on: October 12, 2007, 12:10:01 PM

Yeah, SunGard is central to my experience of Carlstadt. One of the better SunGard facilities that I've been to, but the location is only marginally more tolerable than Lagos, Nigeria.

The camera adds a thousand barrels. - Steven Colbert
Evil Elvis
Terracotta Army
Posts: 963


Reply #31 on: October 12, 2007, 12:21:58 PM

I'd go with Python or Java (J2SE) as a first language

- Easy to compile; you don't need to wrestle with an IDE (or learn how to compile w/o using the IDE).  Just get a color-syntax text editor (notepad++, jEdit)
- Procedural programming languages are easier for most people to understand compared to functional programming languages (haskell, etc)
- You won't have to deal with pointers/addresses or any memory management (C/C++).  This will let you focus on understanding the base concepts
- Lots of tutorials and documentation.
- Fairly cross-platform

http://www.gotapi.com/ is a good all-in-one library documentation link
Yegolev
Moderator
Posts: 24440

2/10 WOULD NOT INGEST


WWW
Reply #32 on: October 12, 2007, 12:49:13 PM

Yeah, SunGard is central to my experience of Carlstadt. One of the better SunGard facilities that I've been to, but the location is only marginally more tolerable than Lagos, Nigeria.

We have an office in Lagos, too, which fortunately for me is too far away to use as a live/redundant datacenter.  Denver was about four miles too far... so we get Cinncinnatti.  Sigh.

Why am I homeless?  Why do all you motherfuckers need homes is the real question.
They called it The Prayer, its answer was law
Mommy come back 'cause the water's all gone
naum
Terracotta Army
Posts: 4262


WWW
Reply #33 on: October 12, 2007, 12:54:21 PM

Oh, I forgot to mention Javascript.

Because most have a love/hate relationship with it.

A decent language with functional construct ability, but resolving browser discrepancies is still an annoyance of needless exponential proportion… …can be used for stand alone application (XUL) development or embedded too but haven't seen too much on that front, at least those of the publicly accessible variety…


"Should the batman kill Joker because it would save more lives?" is a fundamentally different question from "should the batman have a bunch of machineguns that go BATBATBATBATBAT because its totally cool?". ~Goumindong
Morat20
Terracotta Army
Posts: 18529


Reply #34 on: October 12, 2007, 01:20:04 PM

I'd go with Python or Java (J2SE) as a first language

- Easy to compile; you don't need to wrestle with an IDE (or learn how to compile w/o using the IDE).  Just get a color-syntax text editor (notepad++, jEdit)
- Procedural programming languages are easier for most people to understand compared to functional programming languages (haskell, etc)
- You won't have to deal with pointers/addresses or any memory management (C/C++).  This will let you focus on understanding the base concepts
- Lots of tutorials and documentation.
- Fairly cross-platform

http://www.gotapi.com/ is a good all-in-one library documentation link
Unless you have a total hatred of all things Microsoft, you can get a decent enough development enviroment for C# for free -- Visual Studio for C# works quite well, and it's as functional a way of teaching OOP as Java.

Java's got a ton more open-source stuff to play with than C#, but I have to admit liking C# more. I feel a bit dirty saying it, though.

But the basics of any sort of programming job these days are going to be understanding of OOP principles and the basics of web development. Practically anything you do will involve one or the other. Any any OOP language will teach you the first, and any sort of web development will teach you the second. 
Pages: [1] 2 3 Go Up Print 
f13.net  |  f13.net General Forums  |  General Discussion  |  Topic: What programming languages should I learn?  
Jump to:  

Powered by SMF 1.1.10 | SMF © 2006-2009, Simple Machines LLC