f13.net

f13.net General Forums => General Discussion => Topic started by: CharlieMopps on October 12, 2007, 04:25:15 AM



Title: What programming languages should I learn?
Post by: CharlieMopps 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.




Title: Re: What programming languages should I learn?
Post by: Shavnir 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.


Title: Re: What programming languages should I learn?
Post by: Signe on October 12, 2007, 05:10:21 AM
Miranda and Smalltalk.  You can pretend you're dating.


Title: Re: What programming languages should I learn?
Post by: CharlieMopps 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


Title: Re: What programming languages should I learn?
Post by: Selby 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.


Title: Re: What programming languages should I learn?
Post by: Trippy 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.


Title: Re: What programming languages should I learn?
Post by: Jeff Kelly 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.


Title: Re: What programming languages should I learn?
Post by: CharlieMopps 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!


Title: Re: What programming languages should I learn?
Post by: Jeff Kelly 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


Title: Re: What programming languages should I learn?
Post by: UD_Delt 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.


Title: Re: What programming languages should I learn?
Post by: Salamok 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.


Title: Re: What programming languages should I learn?
Post by: Trippy 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.


Title: Re: What programming languages should I learn?
Post by: Trippy on October 12, 2007, 07:25:41 AM
Don't bother with COBOL.


Title: Re: What programming languages should I learn?
Post by: Murgos 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.


Title: Re: What programming languages should I learn?
Post by: CharlieMopps 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


Title: Re: What programming languages should I learn?
Post by: Righ 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.


Title: Re: What programming languages should I learn?
Post by: UD_Delt 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:


Title: Re: What programming languages should I learn?
Post by: Signe 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!


Title: Re: What programming languages should I learn?
Post by: naum 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…


Title: Re: What programming languages should I learn?
Post by: zubey 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)


Title: Re: What programming languages should I learn?
Post by: Soln 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.


Title: Re: What programming languages should I learn?
Post by: Morat20 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.


Title: Re: What programming languages should I learn?
Post by: Yegolev 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.


Title: Re: What programming languages should I learn?
Post by: UD_Delt 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?


Title: Re: What programming languages should I learn?
Post by: naum 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…


Title: Re: What programming languages should I learn?
Post by: Krakrok on October 12, 2007, 09:54:54 AM

I charge those prices to write ASP.


Title: Re: What programming languages should I learn?
Post by: Yegolev 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!


Title: Re: What programming languages should I learn?
Post by: CharlieMopps 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


Title: Re: What programming languages should I learn?
Post by: Righ 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.


Title: Re: What programming languages should I learn?
Post by: Yegolev 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.


Title: Re: What programming languages should I learn?
Post by: Righ 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.


Title: Re: What programming languages should I learn?
Post by: Evil Elvis 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


Title: Re: What programming languages should I learn?
Post by: Yegolev 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.


Title: Re: What programming languages should I learn?
Post by: naum 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…



Title: Re: What programming languages should I learn?
Post by: Morat20 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. 


Title: Re: What programming languages should I learn?
Post by: Samwise on October 12, 2007, 07:08:00 PM
Basically programming is by no means arcane magic and I seriously never understood the focus on specific languages that many colleges nowadays have.

This.  None of the required computer science courses I took in college were about "learn this language".  You usually learned a language or two or three as you went along, but that was almost incidental.  Taking a class in a particular language always strikes me as putting the cart before the horse.

It's like... I want to get better at typing.  What finger should I practice with first?


Title: Re: What programming languages should I learn?
Post by: Margalis on October 12, 2007, 09:13:35 PM
The important thing is developing a methodology and good habits.

You'd be amazed at how many engineers are not good problem solvers. Simple things like eliminating variables and starting with simple test-cases are beyond many people, as is writing code that fits together properly.

If I had to give one piece of advice to any programmer, it would be that for each block of code (function, piece of a function, etc) understand what you are trying to accomplish very clearly. With large applications many people end up with tiers of code that do something but they aren't sure of exactly what, which makes it impossible to fit them together or debug.


Title: Re: What programming languages should I learn?
Post by: Yoru on October 13, 2007, 03:58:19 AM
Jesus, yes, everything Margalis just said.

When just starting out, it's a pitfall for many newbies to pick a single language and focus on that to all exclusion of anything else. I see this a lot in people who come out of trade schools or degree-mill programs - they "know how" to program in C# or VB or Java, sometimes C++. And by "know how" I mean "they can generally describe the syntactical and occasionally semantic structures of the language to an intermediate level, but have no idea why the fuck anything is structured like it is."

Maybe it's just me being an elitist oldschool dorkwad, but the real value, I find, is in someone who knows not just how to work the tools, but really more why the tools work as they do. When you understand your tools, you can figure out how to apply them properly in a given situation with some experience and brain-grease.

So. Yes, starting out, learn one of the New Hotness languages like C#, Java, Python, Ruby. Any of them. Just get into programming. And fucking Jesus, do it for the love of it, not for the money - if you love it, you'll learn to do it right; if you want to get paid, go get an MBA or sell real estate or something.

However, after 6-12 months, you should be looking at picking up a second, reasonably similar language. You won't even fully understand your first language by this point, but the real value in learning two alike languages is having a basis for comparison. See how they're similar. See how they're different. Compare. Contrast. Figure out what one does better than the other, and try to find out why. This is the point at which you realize that programming languages are just tools to get a job done, and there's a shitton of tools out there. Anyone who claims that a single language is the proper fit for all applications is merely a Tool, capital T.

You should also be learning about various basic computing concepts. Learn how a compiler works, learn how an operating system works, learn the basic math behind Turing machines and automata. Learn algorithm analysis. Why? This is all basic B.Sc. level shit that will help you immeasurably if you really understand it; it helps you understand why computers (and languages) operate as they do, and gives you good models and points of reference to base future work on.

Learn how to debug well. Learn to isolate problems and learn to construct good tests. Learn to construct batteries of tests that you can subject you code to. Learn rigor, in the mathematical and engineerological sense of the word.

Eventually you're going to want to peek at Assembly, in some form, to get an idea of what the compiler is building for you. You'll want to eventually know a very low-level language, like C, since pretty much all of UNIX is built in it, and unless you're living purely in a Consumer Desktop Apps world, you'll bump into UNIX at some point. You'll eventually need to learn about memory management without garbage collection, if only in an academic sense (depending on your future occupation).

And here's the thing about real work - a lot of the real work isn't greenfield coding. It's fucking around with libraries, tinkering with existing shit. Learn how to read and deconstruct other people's code and systems, learn how to document your own to prevent whoever comes after you from tearing their hair you.

Uh... and learn to drink. :)


Title: Re: What programming languages should I learn?
Post by: WindupAtheist on October 13, 2007, 04:22:55 AM
*pokes head into thread*

Is there a reasonably modern language I can get for free, write shittly little programs with like it's the eighties and I'm a kid with a Commodore 64, compile, and send to other people?  I haven't coded shit since I *was* that kid.


Title: Re: What programming languages should I learn?
Post by: Yoru on October 13, 2007, 04:34:10 AM
*pokes head into thread*

Is there a reasonably modern language I can get for free, write shittly little programs with like it's the eighties and I'm a kid with a Commodore 64, compile, and send to other people?  I haven't coded shit since I *was* that kid.

Java. You can get Java compilers for free, hell, there's even a free IDE if you want one (Eclipse). They can deal just fine with commandline I/O, if that's what you want, and it has a reasonably complete set of basic UI tools (Swing/AWT - last ones I used, several years ago).

C# costs moneys, in general. Although I think XNA Game Studio Express is all C#-driven, I don't know how suitable it is for commandline stub programs. It does game stuff though. :)

Edit: As for "compile and send to other people", I know there's ways to package compiled Java into Windows executables, but damned if I remember how. C#/XNA GSE might be what the doctor ordered though.


Title: Re: What programming languages should I learn?
Post by: Krakrok on October 13, 2007, 05:14:25 AM
*pokes head into thread*

Is there a reasonably modern language I can get for free, write shittly little programs with like it's the eighties and I'm a kid with a Commodore 64, compile, and send to other people?  I haven't coded shit since I *was* that kid.

Use this:

http://www.lazarus.freepascal.org/


Title: Re: What programming languages should I learn?
Post by: tkinnun0 on October 13, 2007, 05:58:36 AM
*pokes head into thread*

Is there a reasonably modern language I can get for free, write shittly little programs with like it's the eighties and I'm a kid with a Commodore 64, compile, and send to other people?  I haven't coded shit since I *was* that kid.

Javascript, it's in your browser. Find a small script from the web, save it to your desktop and click reload to compile. The rest just follows from there.


Title: Re: What programming languages should I learn?
Post by: Quinton on October 13, 2007, 06:01:00 AM
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.

Ahaha...  I *love* that nobody bothers learning system levels languages or skills any more from a job security point of view.  It does make it really hard to hire more qualified kernel engineers in my group, which kinda sucks though.

I am a bit amazed at the kids these days coming from programs where they only learn Java who have absolutely no clue what the machine is actually doing under the hood and are utterly dependent on their fancy IDEs to have any hope of doing anything.  Nobody has ever been able to teach effective debugging, from what I've seen.  Not now, not ten years ago, not long before my time.

- Q


Title: Re: What programming languages should I learn?
Post by: Quinton on October 13, 2007, 06:16:34 AM
As a point of reference, here's what worked for me.  I did grow up with 6502 based microcomputers though -- the world has moved on in a number of ways since then:

BASIC was a nice place to get started with programming -- these days something like Python might make more sense though.  A friendly environment where you can get used to general concepts and do useful stuff but have a bit of a safety net.  Interactive modes and not needing to muck about with compilation make this sort of thing extra beginner-friendly.

6502 Assembly was a fantastic way to wrap my head around what the machine actually does -- I'd suggest ARM these days as a nice clean instruction set which has the advantage of being used in virtually every mobile/embedded device shipped now.  Lots of practical uses for it and little dev boards available for cheap.

I spent a lot of time exploring C / Pascal / x86 assembly / C++ / other random languages.  A number of people have made the (very good) point that programming (or software engineering for that matter) is not about a particular language so much as a set of problem solving skills that can be used with a wide variety of tools (languages, libraries, debuggers, etc) as appropriate for the situation at hand.
I wrote a lot of C and C++ stuff in college with a fair bit of assembly intermixed.

What you use will be colored a lot by the kind of projects you want to work on and on what level.  I do OS engineering stuff and tend to work in C or Assembly mostly, sometimes dealing with higher level bits in C++/Java and a whole host of scripting and domain specific tools (Python/Lua/Make/Awk/sh/etc) to glue things together. 

Theoretical background is good stuff but don't wait too long to get your hands dirty.  Best way to learn how to write software is to write software.  Experiment.  Try things outside of just simple coursework exercises.  Find a small-midsize project that's interesting and try to make something that does something interesting to you.  Find a middle ground between being too ambitious (being able to actually complete the projects you try is a nice thing) and too cautious (you're not going to learn a lot if you don't push your limits).

- Q


Title: Re: What programming languages should I learn?
Post by: bhodi on October 13, 2007, 06:42:19 AM
Use Perl!


Title: Re: What programming languages should I learn?
Post by: Signe on October 13, 2007, 07:26:30 AM
I don't even know why you'd want to learn one anyway.  BORING!  Do something exciting and profitable, instead.  Be a spy or a rent boy.


Title: Re: What programming languages should I learn?
Post by: Morat20 on October 13, 2007, 09:36:42 AM
*pokes head into thread*

Is there a reasonably modern language I can get for free, write shittly little programs with like it's the eighties and I'm a kid with a Commodore 64, compile, and send to other people?  I haven't coded shit since I *was* that kid.
C# is free as well -- just get Microsof'ts C# visual studio. Their free version offers you anything you're really likely to need. Java, as I noted before, is also free and has a mertic shit-ton of open-source solutions and modules for practically anything. Lately I've been playing with Java's native security packages (admittedly for an otherwise boring class called "Shit you already knew about security, plus cryptography which you didn't know") and that's been fun. I've been meaning to see what C# has in terms of security options.


Title: Re: What programming languages should I learn?
Post by: Samwise on October 13, 2007, 11:06:18 AM
*pokes head into thread*

Is there a reasonably modern language I can get for free, write shittly little programs with like it's the eighties and I'm a kid with a Commodore 64, compile, and send to other people?  I haven't coded shit since I *was* that kid.

All of the languages you could use back then are still around and freely available, if you don't want to bother learning any new ones.  If you've still got any of those old books that had programs you could type in, they'll probably still work on "modern" versions of those languages.  This (http://en.wikipedia.org/wiki/Just_BASIC) looks like a decent free version of BASIC.  Logo (http://www.cs.berkeley.edu/~bh/logo.html).  FORTRAN 77 (http://www.neuralwiki.org/index.php?title=Installing_Fortran).

The more "modern" free equivalents would be scripting languages like Perl, Ruby, Python, PHP, etc.  Those are so easy to find free interpreters/compilers for that I won't even list them here.   :-)


Title: Re: What programming languages should I learn?
Post by: Murgos on October 13, 2007, 12:05:27 PM
I'm actually having trouble coming up with a popular language that costs money atm.  As was mentioned earlier even C#/VB.NET/ASP.NET is free, as in beer, and a MS C# IDE is freely available.  I think every language mentioned so far in this thread is free.

The tools to effectively use many of these languages require a fee of some sort but as far as just banging out some code and watching it run, just takes some download time.


Title: Re: What programming languages should I learn?
Post by: Baldrake on October 13, 2007, 12:57:04 PM
As others have said, you should learn an OO language, C, a scripting language and a functional language. You will then be able to pick up pretty much any other language quickly.

The reason to learn C is that it requires you to know the underlying machine model (heap, stack, pointers, etc.), and has no safety net.

Having said all that, I believe it is still true that the majority of the world's commercial codebase is written in COBOL, and a lot of engineering applications are still written in FORTRAN. It's surprising, but there's a big shortage of people who can program mainframes these days. So learn all of the above, but don't automatically write off the older languages.


Title: Re: What programming languages should I learn?
Post by: Quinton on October 13, 2007, 03:15:46 PM
I'm actually having trouble coming up with a popular language that costs money atm.  As was mentioned earlier even C#/VB.NET/ASP.NET is free, as in beer, and a MS C# IDE is freely available.  I think every language mentioned so far in this thread is free.

The tools to effectively use many of these languages require a fee of some sort but as far as just banging out some code and watching it run, just takes some download time.

Yeah, there's not much of a market for selling people fancy compilers / development environments these days.  The quality of the freely available tools is pretty great.  One of the things I love about software as a hobby or career is the cost of entry is so insanely low.  Anyone who can scare up a computer (not even a particularly new or fancy computer) can be hacking on stuff in no time at all.

- Q


Title: Re: What programming languages should I learn?
Post by: Viin on October 13, 2007, 04:09:00 PM
I know no one has mentioned these, and I don't recommend them as first languages, but if you like to build web apps then learning ActionScript and Flex is pretty neat. ActionScript would be second nature to you if you know Java. Flex is just an extra framework that helps you build a nice GUI for Flash-based apps without hardly any grunt work (especially if you use Eclipse or Flex Builder).


As for learning a programming language .. this has been said above, but I'll say it again. Only do it if you like it. Otherwise, if you think it'll get you a job, yah you might get one but you are going to hate it. And you will probably be a junior/mid-level programmer your whole life working 60-80hr weeks and you'd get stuck with all the crap work because it's the pros who get to work on the fun stuff. Only if you truly enjoy programming will you be happy with a career as a programmer.

Personally, I'd recommend that you learn programming on your own. Go to school if you want a CS degree, but learn programming on your own first (then you'll breeze through the poorly taught classes and maybe pickup on some of the logical skills and practices).

I'd recommend getting into one of the web languages, such as Ruby or PHP. At least then you can build yourself something and have it out there easily.. such as a photo album, your own blog system, a tool to calculate your trade stuff in Eve, etc. Since HTML is easy to learn, you can super easily create an interface for the app - learning GUI stuff in Java is the pits. And, you'd get to learn about working with databases (setup a mySQL instance) and learn how to push/pull/query/optimize so that your app does something useful.

Once you are comfortable with a purely HTML based interface, start working on AJAX/Javascript.. expand it out and learn how those languages work and interface with applications and your browser. Web 2.0+? is the future of consumer apps, and that's where it starts today - Along with flex/actionscript too of course.

Edits for clarity.


Title: Re: What programming languages should I learn?
Post by: Yoru on October 13, 2007, 10:32:39 PM
As a precaution, if you want to do web stuff, "Flex" also refers to a tool that helps you build compilers. So make sure you clarify your Googling if you're looking for the web-facing Flex.


Title: Re: What programming languages should I learn?
Post by: CharlieMopps on October 14, 2007, 05:55:47 AM
Actually, I already know Apple Basic fairly well. I made a paint program in it in highschool. I didn't know how to store my data properly though and it ended up needing 4 floopys to save 1 image... lol

Another kid in class was a computing genius and is probably making a shit ton of money now. He made a "save the maiden" game, where there was a girl up in a tower and you had to shoot an arrow into the tower with a rope attached. Then you'd climb the rope to save her... at the time, it was as good as any game you could get at a retail outlet.


Title: Re: What programming languages should I learn?
Post by: Murgos on October 14, 2007, 06:41:25 AM
Since I'm not fully awake yet I think I will hand out more advice.

Programming is an iterative and incremental process.  Open your debugger and the languages help files at the same time you open whatever editor you are using for your coding (if you have an IDE that does it all, great!  Learn to use it well).  Use both the debugger and the language guide continuously while you code, double check your assumptions religiously.  Stop at every reasonable point you can and compile.  Figure out where you can do an incremental build that should run and do something and work towards that and then run it and test it!

Does this system sound like more work?  WRONG!  Following those simple guidelines is, in every way imaginable, less work than not doing following it.

Once you are used to that you should be in a state where you are almost never unable to run your code, even if it's just to produce some debug text.  This will save you more time coding and will make you a better coder than 95% of the other advice in this thread and is applicable to all languages.

The debugger is your friend, if you love it, it will give you cake.


Title: Re: What programming languages should I learn?
Post by: Stephen Zepp on October 14, 2007, 11:06:03 AM
Since I'm not fully awake yet I think I will hand out more advice.

Programming is an iterative and incremental process.  Open your debugger and the languages help files at the same time you open whatever editor you are using for your coding (if you have an IDE that does it all, great!  Learn to use it well).  Use both the debugger and the language guide continuously while you code, double check your assumptions religiously.  Stop at every reasonable point you can and compile.  Figure out where you can do an incremental build that should run and do something and work towards that and then run it and test it!

Does this system sound like more work?  WRONG!  Following those simple guidelines is, in every way imaginable, less work than not doing following it.

Once you are used to that you should be in a state where you are almost never unable to run your code, even if it's just to produce some debug text.  This will save you more time coding and will make you a better coder than 95% of the other advice in this thread and is applicable to all languages.

The debugger is your friend, if you love it, it will give you cake.

Amen brothah. I don't think I've heard more actually useful advice when learning programming. From personal experience, the compiler can actually teach you a lot as well if you pay attention: If it won't compile or link, pay attention as to why--and if it's not something trivial (missing brace, typo), then spend the time to learn exactly what the problem is before moving on.

I can't describe how many years of C/C++ programming where I've said "well shit, char * string; didn't work, let's try char string[128] and see if it compiles". Not a good way to learn.


Title: Re: What programming languages should I learn?
Post by: CharlieMopps on October 15, 2007, 10:16:35 AM
I think my biggest problem is going to be lack of knollege of complex functions. For example: Often we have to tell field enginers to wire things, and listed in our database they will be wired via a numbered pair: Like pair 1424, etc... The field tech however sees a bundle of colored wire and says "Which one?" So we had to look it up on a 20 page chart. SILLY! I said... so I went about writing a script. There are 24 repeating colors, so I figured out a formula that would leave me with a uniqe number for each color. 1 for White, 2 for black, etc... The problem was it would always give me a remainder. Like 1.2, 1.6, 1.7 were all = to white... I wanted there to be no remainder, but I couldn't just remove the decimal because it was an integer... I couldn't find a "Round off" feature in my scripting language (it either rounded up or down, and 1.9 would have equaled 2)

In the end someone mentioned "Modulus" to me... I searched the net and:
Modulus
(1) : the number (as a positive integer) or other mathematical
      entity (as a polynomial) in a congruence that divides the
      difference of the two congruent members without leaving a
      remainder.

And there I was... I'm going to have to take some math classes or something.


Title: Re: What programming languages should I learn?
Post by: Murgos on October 15, 2007, 11:07:35 AM
Uh, yeah, not to scare you but programming is all math, mostly algebra.  The more comfortable you are with math the more comfortable you will be as a programmer.  Generally, the math needed is pretty simple though, of course, it depends on what you are doing.  For example at this moment I am supposed to be writing a simulation to verify the bit train input to a second order sigma-delta modulated DAC against the sine wave on the output end but for five years I did web development and hardly ever did anything more complex than the above mentioned modulo arithmetic.


Title: Re: What programming languages should I learn?
Post by: CharlieMopps on October 15, 2007, 11:11:45 AM
Uh, yeah, not to scare you but programming is all math, mostly algebra.  The more comfortable you are with math the more comfortable you will be as a programmer.  Generally, the math needed is pretty simple though, of course, it depends on what you are doing.  For example at this moment I am supposed to be writing a simulation to verify the bit train input to a second order sigma-delta modulated DAC against the sine wave on the output end but for five years I did web development and hardly ever did anything more complex than the above mentioned modulo arithmetic.

I'm not afraid of math... I just lacked the knowledge that there was even such a thing as "Modulus" once I knew, I could use it.

What you're talking about sounds like you are doing some sound editing software, and using calculus to do it. I'm very rusty on Calculus =(


Title: Re: What programming languages should I learn?
Post by: Murgos on October 15, 2007, 11:15:34 AM
What you're talking about sounds like you are doing some sound editing software, and using calculus to do it. I'm very rusty on Calculus =(

Similar concepts but it's to drive a series of three-phase motors in a specific pattern and the theory is calculus but in practice it's look-up tables and Taylor series expansion.


Title: Re: What programming languages should I learn?
Post by: Yegolev on October 15, 2007, 11:50:49 AM
As far as I could ever determine, no one "does" calculus in the real world.  There isn't really a reason to do it in an established field.


Title: Re: What programming languages should I learn?
Post by: Morat20 on October 15, 2007, 12:07:33 PM
Uh, yeah, not to scare you but programming is all math, mostly algebra.  The more comfortable you are with math the more comfortable you will be as a programmer.  Generally, the math needed is pretty simple though, of course, it depends on what you are doing.  For example at this moment I am supposed to be writing a simulation to verify the bit train input to a second order sigma-delta modulated DAC against the sine wave on the output end but for five years I did web development and hardly ever did anything more complex than the above mentioned modulo arithmetic.

I'm not afraid of math... I just lacked the knowledge that there was even such a thing as "Modulus" once I knew, I could use it.

What you're talking about sounds like you are doing some sound editing software, and using calculus to do it. I'm very rusty on Calculus =(
It's those little tidbits that make the actual formal "How to program a language" class come in handy. :) Any junior college teaching a Pascal (ugh!) or C# or whatnot course will cover a bunch of little functions like that -- ones that are common to most languages, but that you generally won't stumble across in teaching yourself.

Then again, if you're already elbow deep into something, not generally worth it. Just buy a book and skim it.


Title: Re: What programming languages should I learn?
Post by: Salamok on October 15, 2007, 02:02:54 PM
I think my biggest problem is going to be lack of knollege of complex functions. For example: Often we have to tell field enginers to wire things, and listed in our database they will be wired via a numbered pair: Like pair 1424, etc... The field tech however sees a bundle of colored wire and says "Which one?" So we had to look it up on a 20 page chart. SILLY! I said... so I went about writing a script. There are 24 repeating colors, so I figured out a formula that would leave me with a uniqe number for each color. 1 for White, 2 for black, etc... The problem was it would always give me a remainder. Like 1.2, 1.6, 1.7 were all = to white... I wanted there to be no remainder, but I couldn't just remove the decimal because it was an integer... I couldn't find a "Round off" feature in my scripting language (it either rounded up or down, and 1.9 would have equaled 2)

In the end someone mentioned "Modulus" to me... I searched the net and:
Modulus
(1) : the number (as a positive integer) or other mathematical
      entity (as a polynomial) in a congruence that divides the
      difference of the two congruent members without leaving a
      remainder.

And there I was... I'm going to have to take some math classes or something.

This is the one reason why learning a 2nd computer language goes much faster than learning the 1st.  Once you know what functions should be available it takes no time at all to look up the syntax and use them.  Knowing what you are looking for and how to find it are major accomplishments, before there was google-fu there was help-fu.


Title: Re: What programming languages should I learn?
Post by: bhodi on October 15, 2007, 02:32:23 PM
I think my biggest problem is going to be lack of knollege of complex functions. For example: Often we have to tell field enginers to wire things, and listed in our database they will be wired via a numbered pair: Like pair 1424, etc... The field tech however sees a bundle of colored wire and says "Which one?" So we had to look it up on a 20 page chart. SILLY! I said... so I went about writing a script. There are 24 repeating colors, so I figured out a formula that would leave me with a uniqe number for each color. 1 for White, 2 for black, etc... The problem was it would always give me a remainder. Like 1.2, 1.6, 1.7 were all = to white... I wanted there to be no remainder, but I couldn't just remove the decimal because it was an integer... I couldn't find a "Round off" feature in my scripting language (it either rounded up or down, and 1.9 would have equaled 2)
You may have been served better with large intergers, bitwise operations, and bitmasking (http://en.wikipedia.org/wiki/Mask_(computing))...

For example, if you have Red Green Blue White represented as first, second, third, fourth bits on a binary number, you can easily toggle them individually and then get a number that can easily be broken down into it's component parts. It's a pretty efficient way of storing a lot of boolean (yes or no) values inside one number where space is a premium. If you use a bigint or long, that should give you all the space you need. No need to develop or discover weird mathematical formulae.

A trivial example, using the value above, 1110 in binary, 14 in decimal can be reversed (using a bitmask) and it's component pieces can be siphoned back out very easily to mean that it contains one red, one green, one blue.

I may be misunderstanding your problem, of course, but this is still handy to know.


Title: Re: What programming languages should I learn?
Post by: Sauced on October 15, 2007, 03:17:56 PM
The sooner you start working with unit testing, the better off you'll be long-term.  If you decide to try Java, look into J Unit.  I'm not as familiar with similar tools for other languages, but I'm sure they are out there.

Things you might also look into are source code control and build systems.  Subversion seems to be the defacto SCC system of choice these days, and Maven is being used more and more for builds.  The build system suggestion is just that, you won't need it for a while, but source code control is your friend.


Title: Re: What programming languages should I learn?
Post by: raydeen on October 15, 2007, 07:59:17 PM
I'm a child of the '80's so BASIC is still my first love. Anything you throw at me I can eventually do in BASIC. It won't be fast, pretty or efficient, but I can do it. For my personal taste, FreeBASIC fits my bill.

http://fbide.freebasic.net/

Contains FreeBASIC + a nice IDE. You can program in line numbers if you so need along with doing QBASIC style syntax. And compile .EXEs. Nice.

I'm futzing about with C/C++ and Python. I used to think Delphi/Object Pascal was the Second Coming but I'm over that now. 1992 has come and gone.

Java? Never could get my head around that one. It just seemed complicated for the sake of being complicated.

</2 cents>

Edit: after reading all the other posts I realize I'm the least qualified to lend any advice here. I only 'code' for recreational sake, not professional. I wish I could code like the big boys but math has always hated me and I probably couldn't code my way out of a wet paper bag. Sooooo....disregard my stupidity unless you like BASIC. If you do, let's GOSUB the night away!


Title: Re: What programming languages should I learn?
Post by: CharlieMopps on October 16, 2007, 05:19:43 AM
Hey, if I can get up to $50k a year I'll be happy. I've pretty much capped out my salary for a self-taught network monkey. Even if I get all my certs the pay doesn't get much better with becoming a manager. There's just too many people in my field, and most of them don't know what they're doing. On top of that, it's only a matter of time before Cisco starts automating a lot of this crap (I've written scripts that do a lot of the work for me so I'm sure Cisco can) and then I'll REALLY be screwed.


Title: Re: What programming languages should I learn?
Post by: Shavnir on October 16, 2007, 05:42:24 AM
Since this seems the most appropriate thread to ask, anyone able to help me with a little perl regex I'm trying to cook together?

Basically I want to get the information inside a <li> </li> set of tags, and I want to add
Code:
<a href="http://whatever.com/name">  </a>
inside the li tags.  I've figured out roughly how I can add the href once I've got the variable filled with the name of whatever the item is but I can't quite figure out how to easily extract that.

Edit by Trippy: fixed link


Title: Re: What programming languages should I learn?
Post by: Murgos on October 16, 2007, 07:35:13 AM
Since this seems the most appropriate thread to ask, anyone able to help me with a little perl regex I'm trying to cook together?

Basically I want to get the information inside a <li> </li> set of tags, and I want to add    (http://whatever.com/name) inside the li tags.  I've figured out roughly how I can add the href once I've got the variable filled with the name of whatever the item is but I can't quite figure out how to easily extract that.

Well formed HTML is an XML document.  I would look at using the Perl XML parser (XML::Parser) to manipulate your tree than using a cludgy regex.  What you want to do is load the XML (your HTML code) into a data structure, such as a hash, navigate to the <li></li> node(s) in question and then insert a new <a>[/url] node into it.

Not only will this method be more robust (the content of your lists or the structure of the page will disappear as issues) but it will teach you more about what you are really doing when you create an HTML document and how the server sees it which should make you more efficient and more capable for future projects.


Title: Re: What programming languages should I learn?
Post by: Trippy on October 16, 2007, 07:40:40 AM
Since this seems the most appropriate thread to ask, anyone able to help me with a little perl regex I'm trying to cook together?

Basically I want to get the information inside a <li> </li> set of tags, and I want to add
Code:
<a href="http://whatever.com/name">  </a>
inside the li tags.  I've figured out roughly how I can add the href once I've got the variable filled with the name of whatever the item is but I can't quite figure out how to easily extract that.

Edit by Trippy: fixed link
Your question is too vague to give you an exact answer cause you didn't explain where you want to put the contents within the <li> tag but if you wanted to do this with a regular expression you would use ( ) and \1. E.g.:

Code:
$my_var = "<li>blah blah blah</li>";

$my_var =~ s/<li>(.*)<\/li>/<li><a href="some_url">\1<\/a><\/li>/;
would give you:

Code:
$my_var = "<li><a href="some_url">blah blah blah</a></li>";

In other words ( ) "capture" whatever pattern is within them and \1, \2, \3, etc. is used in the replacement section to reference those captured patterns.


Title: Re: What programming languages should I learn?
Post by: Salamok on October 16, 2007, 07:44:19 AM
I'm a child of the '80's so BASIC is still my first love. Anything you throw at me I can eventually do in BASIC. It won't be fast, pretty or efficient, but I can do it. For my personal taste, FreeBASIC fits my bill.

http://fbide.freebasic.net/

Contains FreeBASIC + a nice IDE. You can program in line numbers if you so need along with doing QBASIC style syntax. And compile .EXEs. Nice.

I'm futzing about with C/C++ and Python. I used to think Delphi/Object Pascal was the Second Coming but I'm over that now. 1992 has come and gone.

Java? Never could get my head around that one. It just seemed complicated for the sake of being complicated.

</2 cents>

Edit: after reading all the other posts I realize I'm the least qualified to lend any advice here. I only 'code' for recreational sake, not professional. I wish I could code like the big boys but math has always hated me and I probably couldn't code my way out of a wet paper bag. Sooooo....disregard my stupidity unless you like BASIC. If you do, let's GOSUB the night away!

Basic lost it's last bit of usefulness for me when floppy disks went the way of the dodo.  It used to be occasionally useful to write an entirely self contained exe that could fit on a floppy disk, now that I have a decent sized thumb drive portable bloatware is easily acheived.


Title: Re: What programming languages should I learn?
Post by: Yegolev on October 16, 2007, 08:18:04 AM
Code:
$my_var = "<li>blah blah blah</li>";

$my_var =~ s/<li>(.*)<\/li>/<li><a href="some_url">\1<\/a><\/li>/;

Personal preference, I would change the regex delimiters to avoid escaping slashes, which make me cry big fat perl-tears.  I like # or ! myself.
Code:
$myvar=~s#<li>(.*)</li>#<li><a href="some_url">\1</a></li>#;


Title: Re: What programming languages should I learn?
Post by: Shavnir on October 16, 2007, 09:40:53 AM
Basically that last regex only with a href="\1" is what I ended up using.  Thanks for the advice.

Perl is considerably more fun of a language than I had anticipated.


Title: Re: What programming languages should I learn?
Post by: Trippy on October 16, 2007, 09:47:59 AM
If you've just started learning Perl you might want to switch to Ruby. Ruby was partially "insipred" by Perl but it doesn't have Perl's hideous syntax and "sigilness".



Title: Re: What programming languages should I learn?
Post by: naum on October 16, 2007, 10:13:43 AM
If you've just started learning Perl you might want to switch to Ruby. Ruby was partially "insipred" by Perl but it doesn't have Perl's hideous syntax and "sigilness".

Yes, writing as somebody who, for several years, coded primarily in Perl, Ruby offers all that Perl does, and so much cleaner…

Perl breaks down once you start writing complex scripts and need to use more than canned OO. OO in Perl is an abomination, as are data structure implementations that go beyond simple arrays or hashes (associative arrays)…

…I haven't had to "bless a referent" in quite some time now!

About the only thing Perl fanbois could hold over Ruby was CPAN (abundance of library code) but I think any code library you need you can find w/Ruby… …and even for that, I'd much rather still use Ruby… …if you really want to get a gander on how much more Ruby > Perl, dive into the underlying C (and standard library code written in Ruby/Perl), and there is a vast difference in simplicity, clearness, lucidity, etc.…

Not that Ruby isn't without its warts… …all programming languages suck and are replete with picadillos once you get past the toy program phase…


Title: Re: What programming languages should I learn?
Post by: Yegolev on October 16, 2007, 10:26:15 AM
CPAN is probably my biggest gripe with Perl, since downloading and installing modules across all of the servers I support just isn't going to happen.  Even worse, whenever I read a "cookbook" or almost any Perl how-to, it inevitably starts with "Just get BlardyBlar from CPAN..."  Assholes.  If I had CPAN, I probably wouldn't be reading your fucking book.

I'd love to try Ruby, but it's not standard on AIX and I'm not about to go around installing it everywhere.  Perl, awk and Korn together do plenty for me, and the unnamed-hash-reference shit is doable, if nasty.


Title: Re: What programming languages should I learn?
Post by: naum on October 16, 2007, 11:23:16 AM
CPAN is probably my biggest gripe with Perl, since downloading and installing modules across all of the servers I support just isn't going to happen.  Even worse, whenever I read a "cookbook" or almost any Perl how-to, it inevitably starts with "Just get BlardyBlar from CPAN..."  Assholes.  If I had CPAN, I probably wouldn't be reading your fucking book.

I'd love to try Ruby, but it's not standard on AIX and I'm not about to go around installing it everywhere.  Perl, awk and Korn together do plenty for me, and the unnamed-hash-reference shit is doable, if nasty.

Worse, once (on an AIX box, incidentally), I inherited an Perl application where the previous sysop|sysadmin|developer actually modified one of the standard library module code to perform some custom behavior… …that was not whatsoever a prudent move, as I did not make the shocking discovery until the app was migrated to another box…

Also, the automated CPAN installer always gave me nothing but grief and I always installed via manual method…


Title: Re: What programming languages should I learn?
Post by: bhodi on October 16, 2007, 02:24:22 PM
At my work, we have a custom packager using the apt-get framework, and until recently I had to download and package all requested modules by hand into .pkg and .rpm.

When we moved to ubuntu server, however, I now cheat -- I simply mirror debian.cpan.org -- all the modules are packaged into .deb for me!

One of the hardest things to deal with are the huge dependency chains... Someone asks for a module and it can quickly balloon into one, two, or even three dozen modules.


Also:
(http://imgs.xkcd.com/comics/with_apologies_to_robert_frost.png)


Title: Re: What programming languages should I learn?
Post by: Morat20 on October 16, 2007, 02:41:04 PM
This seems as good a place as any -- if I wanted to much with Outlook, basically adding in some custom stuff (archiving emails to a DB, maybe addins to allow "click to bring up a DB entry associated with this email address") where would I go about starting learning this stuff?

I know it's doable, but I haven't toyed much at all with the Microsoft end of things.


Title: Re: What programming languages should I learn?
Post by: Salamok on October 16, 2007, 03:33:59 PM
This seems as good a place as any -- if I wanted to much with Outlook, basically adding in some custom stuff (archiving emails to a DB, maybe addins to allow "click to bring up a DB entry associated with this email address") where would I go about starting learning this stuff?

I know it's doable, but I haven't toyed much at all with the Microsoft end of things.

VBA the good news is you can prgram it right in outlook without buying anything extra.

Alt+F11 to open the VBA editor


Title: Re: What programming languages should I learn?
Post by: Morat20 on October 16, 2007, 03:51:33 PM
VBA the good news is you can prgram it right in outlook without buying anything extra.

Alt+F11 to open the VBA editor
Fuck... you're telling me the easy way is Visual Basic? Why the hell hasn't Microsoft integrated C#, since it'd seem to work with the whole damn .NET thing?


Title: Re: What programming languages should I learn?
Post by: Salamok on October 16, 2007, 03:57:46 PM
VBA not VB and it is right there embedded in the application how easy do you want it?  Lets see a powerful programming language customized to and embedded within the very application you are trying to dork with...

You are correct sir that is way too friggen hard, lets scrap it and write our own solution from the ground up!


Title: Re: What programming languages should I learn?
Post by: Morat20 on October 16, 2007, 04:10:50 PM
VBA not VB and it is right there embedded in the application how easy do you want it?  Lets see a powerful programming language customized to and embedded within the very application you are trying to dork with...

You are correct sir that is way too friggen hard, lets scrap it and write our own solution from the ground up!
It was more a note on Microsoft's inconsistancy -- and the fact that what I was looking at doing was a bit more extensive than just the Outlook addons. I can easily do all the rest in C#, I had just never mucked around with Outlook like that. So rather than one unified approach, I'm stuck with trying to make disparate pieces in at least two seperate languages play ball -- one of which doesn't play well with .NET, which is irritating because MS is all about .NET these days to prevent exactly this problem.

I see the problem is Microsoft is lagging with VSTA, which DOES happily play with .NET -- in short, I figured they were further ahead than they were.

It's not using VBA to do some piddling extra stuff with Outlook -- it's all the other stuff I want connected to it. I only asked about Outlook because, well, the other parts were pretty trivial and I made the rather stupid assumption that since I knew it could be done, and with Microsoft's blessing (rather than hacking around trying to figure out their API), that it was compatible with .NET.

I wonder how far along VSTA is.


Title: Re: What programming languages should I learn?
Post by: Murgos on October 16, 2007, 05:15:15 PM
You want Visual Studio Tools for Office:

http://msdn2.microsoft.com/en-us/office/aa905533.aspx


Title: Re: What programming languages should I learn?
Post by: Trippy on October 16, 2007, 07:10:55 PM
Not that Ruby isn't without its warts… …all programming languages suck and are replete with picadillos once you get past the toy program phase…
The only wart on Ruby that bothers me is the lack of Unicode support (yes I know there are hacks and workarounds).


Title: Re: What programming languages should I learn?
Post by: Yegolev on October 17, 2007, 07:37:22 AM
At my work, we have a custom packager using the apt-get framework, and until recently I had to download and package all requested modules by hand into .pkg and .rpm.

I see your point but I don't want to write a custom packager.  Neither do I want to -- or have time to -- conjure up a gold-image of a Perl install that everybody is happy with... if that's even possible.  If this sounds like fun, I'll let you know when we post another opening.  :-)

One of the hardest things to deal with are the huge dependency chains... Someone asks for a module and it can quickly balloon into one, two, or even three dozen modules.

See, updating every server in the enterprise with new Perl modules would break more things than it fixed.  I'm currently trying to hack around a problem with two different libclntsh.a on a server that is stopping userids that aren't configured to use the complex oracle environment from calling DBD/DBI.  Tinkering with the delicate balance of modules and archive files causes much crying and backup failures.  This would be much, much easier if Perl was PERL rather than perl + hundreds of modules maintained by thousands of people.  Now I get to modify someone's env and hope they don't screw it up later.

I have been spoiled by using a commercial UNIX.  IBM takes care of all of this dependency shit for me, so if I need a fix then I install it and it works.  If I need to go up a version number, I just install it.  Missing dependencies are easy to get, but they don't usually happen since I can either DL the whole update or I can feed a LPP list to them and they give me only what I need.  I like the first one because I can then use that update anywhere, which is important when you have 200 or so servers.


Title: Re: What programming languages should I learn?
Post by: Morat20 on October 17, 2007, 09:08:54 AM
You want Visual Studio Tools for Office:

http://msdn2.microsoft.com/en-us/office/aa905533.aspx
Thanks. I think we have a version of that kicking around the office I can borrow to play with. (They're very happy here to loan out development tools for professional growth. If I want to actually develop and charge for it, I have to go buy my own/download my own copy of anything -- but my boss is VERY supportive of people learning new and potentially useful stuff on our own time).


Title: Re: What programming languages should I learn?
Post by: Quinton on October 17, 2007, 11:07:26 PM
Not that Ruby isn't without its warts… …all programming languages suck and are replete with picadillos once you get past the toy program phase…
The only wart on Ruby that bothers me is the lack of Unicode support (yes I know there are hacks and workarounds).


Ruby also suffers from pretty much the *worst* performance of all the popular scripting languages out there for web stuff.

It is my understanding that the Ruby model for scalability is "hope your web 2.0 app becomes popular enough that you get bought by some large company with real infrastructure that will help port your system to something else" ^^

But I hear the framework stuff (Rails) is awesome.

- Q


Title: Re: What programming languages should I learn?
Post by: Trippy on October 17, 2007, 11:37:27 PM
Not that Ruby isn't without its warts… …all programming languages suck and are replete with picadillos once you get past the toy program phase…
The only wart on Ruby that bothers me is the lack of Unicode support (yes I know there are hacks and workarounds).
Ruby also suffers from pretty much the *worst* performance of all the popular scripting languages out there for web stuff.
Which really doesn't matter cause it's trivial to scale share-nothing Web apps -- it's almost always the DB that's the bottleneck.

Quote
It is my understanding that the Ruby model for scalability is "hope your web 2.0 app becomes popular enough that you get bought by some large company with real infrastructure that will help port your system to something else" ^^
No that's not the Ruby (Rails) model for scalability. Twitter had performance issues but if you look at their scaling presentation there's nothing in there about the slowness of Ruby on the Web app side of things.


Title: Re: What programming languages should I learn?
Post by: naum on October 18, 2007, 08:54:35 AM

But I hear the framework stuff (Rails) is awesome.


Eh, Rails is a good fit for certain, selected subsets of web computing sphere…

The good:

* DB backed CRUD like applications easy to write and throw together, backed by ActiveRecord library

* Nice integration with AJAXy capabilities, including RJS (Rails Javascript templates)

* Migrations, easy to manage DB schema

The bad:

* Overblown and way too much cruft for many many projects…

* Becomes clunky and cumbersome when you step aside from the general paradigm of doing things - multiple DB, too tied to mySQL

* Memory/performance hog/not advised to run RoR apps on shared hosts, unlike PHP or other scripting solutions…

* A bitch to deploy, though if you can wrap your head around Mongrel/Capistrano/Subversion, can be a one click install deal, though again, not for folks on shared hosts…