Thinking of dabbling in programming again.

Kippa

Senior member
Dec 12, 2011
392
1
81
A few decades ago I learned programming at college. The main languages that I learnt were Assembly, Cobol, Pascal and Modula 2. I haven't done one line of code in like 20 years though I was thinking of learning a new language. Part of me wonders if I should go back to Modula 2, though by todays standards I am not sure if that is still knocking around. Computer programming languages, which one would you lot recommend and what books to read for it? Any suggestions welcome. I feel like I might have to start from scratch, though some of the stuff that I learnt might come back to me.
 

Net

Golden Member
Aug 30, 2003
1,592
3
81
get ready for all kinds of language wars lol.

if you already did programming in the past then just pick one that looks fun to you and enables you to do what you want with it.

if its for desktop apps then Java is good.
python is fun, its easy. its like psuedo code.
if you have a Mac and have been interested in making iPhone apps then Objective-C.
if web development, Javascript, node.js, etc...
 

owensdj

Golden Member
Jul 14, 2000
1,711
6
81
You can get Microsoft Visual Studio Express 2013 for Desktop for free to get you started with C# programming. "C# 5.0 in a Nutshell: The Definitive Reference" is a pretty good book for learning C#. The biggest adjustment you'll have to make is understanding object oriented programming.
 

mikegg

Golden Member
Jan 30, 2010
1,937
535
136
Learn Javascript because you can now use it in the backend as well as the front-end. Use Javascript the Definitive Guide.
 

fuzzybabybunny

Moderator<br>Digital & Video Cameras
Moderator
Jan 2, 2006
10,455
35
91
Learn Javascript because you can now use it in the backend as well as the front-end. Use Javascript the Definitive Guide.

Seconded.

The web is evolving and it's evolving in a direction that uses JS for EVERYTHING.

Also learn CoffeeScript for a cleaner-looking and faster-typing Javascript. I suggest you learn JS first before doing CS because all the examples you'll find on the web are all written in JS, so you still need to be very good at parsing JS yourself to understand the examples and tutorials.
 

cytg111

Lifer
Mar 17, 2008
25,811
15,279
136
Look, if you're only going to mess around with programming for fun, stay with assembly.. it is where the most fun is to be had. You could abstract to c/c++ for trivial stuff, but other than that the force is allready strong within you old Luke.
 

Obsoleet

Platinum Member
Oct 2, 2007
2,181
1
0
I really don't get the C# recommendations. Little too close to MS. The JS idea is a decent one, though JS itself has a lot of gotchas and baggage. Personally I'd do Python or JS if the focus is on 'what language'. I stand by my best-learning-material stance though, and what you personally find appealing from a language. Maybe you think the whitespace delimitation is great, maybe not. Some people love Ruby, and some just love C-style error handling..

I've recently worked through books on Go, JS (Node.js servers actually, not really learning JS), Python and C# 5.0 (the one referenced in this thread). I've also dabbled in C and Ruby among others like a bit of Erlang. By far my favorite is Python, I could go on for quite some time as to why but in my humble opinion it can't be beat all around as a general purpose language and ecosystem. I love it, it's so productive if you have limited freetime and you want to produce results as quickly as possible. All my personal projects use it even though I do some JS and C# in my day job.
 

Cogman

Lifer
Sep 19, 2000
10,284
138
106
I really don't get the C# recommendations. Little too close to MS. The JS idea is a decent one, though JS itself has a lot of gotchas and baggage. Personally I'd do Python or JS if the focus is on 'what language'. I stand by my best-learning-material stance though, and what you personally find appealing from a language. Maybe you think the whitespace delimitation is great, maybe not. Some people love Ruby, and some just love C-style error handling..

While it is pretty close to MS, C# is an excellent language. Not liking it just because of MS involvement is short sighted IMO.

Couple that with the availability of Mono, and MS's recent open sourcing of their compilers (and yes, it is REALLY open source, Apache 2.0 license) and there should be a strong reason for the OS community to embrace C#.

That being said, I agree that the language is hardly important. It is generally easy enough to switch from one language to another.

While semi-unrelated, Oracle has been a terrible OS citizen. In many ways worse than MS. The fact that they are suing google over reimplementing the Java API should speak volumes about how bad that company is.
 

mrjminer

Platinum Member
Dec 2, 2005
2,739
16
76
C#. Nothing like having access to a bunch of frameworks / initiatives that are maintained and supported by MS -- for free. There are way too many for a single person to specialize in, though, unless you are a super genius. The alternatives are almost all open source and almost exclusively community maintained. Personally, I would rather use a bunch of libraries MS has a vested interest in maintaining and supporting for free. If choosing between select few, the learning curve on Entity Framework is low, and that will cover all of your database needs. So, with just C# and Entity Framework, you can cover most of the things you are going to want to be able to do with a relatively low learning curve.

Some have mentioned a directive of everything moving to JS, which I don't agree is the case; it is merely an agenda -- other languages are not going away. Further, JavaScript is an extremely terrible and difficult programming language. Speaking from the perspective of the root language and not just using the various frameworks that exist to wrap around it to mask how terrible it is, at least. Luckily, the frameworks for JS are generally good and easy to use, so that may be a moot point. To accommodate the agenda in C# there is, of course, a relatively unknown MS offering called ClearScript, which leverages Google's V8 engine to offer interoperability between JavaScript (among other languages, as well) and C#. The documentation is pretty poor, though, and I haven't used it as a result of that and just finding out about it a couple of days ago, but, again, an example of the benefit of going with C#.

VB is the only C# alternative in my book; their functionality is practically identical (there are a few underlying differences with them related to compiler-generated attributes / reflection / a couple of things that are possible in VB and not C# related to declarations / overloading IIRC, too, but they are generally consistent with each other), but the syntax is too different from most other languages with VB for me to have chosen it, at least, and I think that's a growing trend so resources for C# seem to outweigh resources for VB. Libraries that can be used in C# can be used in VB. Personally, I think VB is going to go away at some point in the distant future; MS doesn't even bother with showing VB examples on their tutorials for any of their modern offerings most of the time.

If you are going web and don't want to do ASP, I would choose PHP, but you have to be prepared to deal with a lot of things yourself working with the root language.

Also, if you like assembly, there is System.Reflection.Emit, or System.Linq.Expressions. While not assembly, Emit lets you output compiler commands directly, and Expression is, for all intents and purposes, a wrapper around Reflection.Emit that abstracts out some of manual optimizations you would have to do through emitting the IL code (though you can often Emit faster / more efficient IL yourself, Expression trees will take some of the burden of maintainability off of you and would let you leverage future optimizations to the underlying IL produced by the trees when MS makes improvements without having to modify your code).
 
Last edited:

Spydermag68

Platinum Member
Apr 5, 2002
2,616
99
91
Another vote for C#.

If you want a challenge try project Euler and some math concepts at the same time.
 

Staples

Diamond Member
Oct 28, 2001
4,953
119
106
The language doesn't matter much. Computers are fast enough to handle everything with ease. All the popular languages have frameworks to do most tasks (like GUIs). Start with one of the most used ones (search for the tiobe index).
 

mikegg

Golden Member
Jan 30, 2010
1,937
535
136
The language doesn't matter much. Computers are fast enough to handle everything with ease. All the popular languages have frameworks to do most tasks (like GUIs). Start with one of the most used ones (search for the tiobe index).

I just read the tiobe index definition. I think it's inaccurate and a poor representative of programming trends.

For example, Javascript is in almost every single website. It should be #1. It's #9 on the list.

Using Google search results isn't a good indicator of what to learn. Instead, use Indeed job trends.

I would learn Javascript, Python, or Java. Javascript is on the rise for everything including app development, back-end, and of course front-end. Python because it's the easiest language to learn.
 

mikegg

Golden Member
Jan 30, 2010
1,937
535
136
C#. Nothing like having access to a bunch of frameworks / initiatives that are maintained and supported by MS -- for free. There are way too many for a single person to specialize in, though, unless you are a super genius. The alternatives are almost all open source and almost exclusively community maintained. Personally, I would rather use a bunch of libraries MS has a vested interest in maintaining and supporting for free. If choosing between select few, the learning curve on Entity Framework is low, and that will cover all of your database needs. So, with just C# and Entity Framework, you can cover most of the things you are going to want to be able to do with a relatively low learning curve.

Some have mentioned a directive of everything moving to JS, which I don't agree is the case; it is merely an agenda -- other languages are not going away. Further, JavaScript is an extremely terrible and difficult programming language. Speaking from the perspective of the root language and not just using the various frameworks that exist to wrap around it to mask how terrible it is, at least. Luckily, the frameworks for JS are generally good and easy to use, so that may be a moot point. To accommodate the agenda in C# there is, of course, a relatively unknown MS offering called ClearScript, which leverages Google's V8 engine to offer interoperability between JavaScript (among other languages, as well) and C#. The documentation is pretty poor, though, and I haven't used it as a result of that and just finding out about it a couple of days ago, but, again, an example of the benefit of going with C#.

VB is the only C# alternative in my book; their functionality is practically identical (there are a few underlying differences with them related to compiler-generated attributes / reflection / a couple of things that are possible in VB and not C# related to declarations / overloading IIRC, too, but they are generally consistent with each other), but the syntax is too different from most other languages with VB for me to have chosen it, at least, and I think that's a growing trend so resources for C# seem to outweigh resources for VB. Libraries that can be used in C# can be used in VB. Personally, I think VB is going to go away at some point in the distant future; MS doesn't even bother with showing VB examples on their tutorials for any of their modern offerings most of the time.

If you are going web and don't want to do ASP, I would choose PHP, but you have to be prepared to deal with a lot of things yourself working with the root language.

Also, if you like assembly, there is System.Reflection.Emit, or System.Linq.Expressions. While not assembly, Emit lets you output compiler commands directly, and Expression is, for all intents and purposes, a wrapper around Reflection.Emit that abstracts out some of manual optimizations you would have to do through emitting the IL code (though you can often Emit faster / more efficient IL yourself, Expression trees will take some of the burden of maintainability off of you and would let you leverage future optimizations to the underlying IL produced by the trees when MS makes improvements without having to modify your code).

Javascript is not terrible nor difficult. Read this:
http://javascript.crockford.com/javascript.html

Anyone who wants to get into programming should learn what's trending. C# and VB are not trending and it'll get more difficult to find jobs in the future.

No startup would use C#. Enterprises are also moving towards Javascript, Python, and sometimes even Ruby.

If you're going to learn a classic language, might as well learn Java.
 

mrjminer

Platinum Member
Dec 2, 2005
2,739
16
76
Javascript is not terrible nor difficult. Read this:
http://javascript.crockford.com/javascript.html

Anyone who wants to get into programming should learn what's trending. C# and VB are not trending and it'll get more difficult to find jobs in the future.

No startup would use C#. Enterprises are also moving towards Javascript, Python, and sometimes even Ruby.

If you're going to learn a classic language, might as well learn Java.

I know JS all too well, but thanks :p
 

Graze

Senior member
Nov 27, 2012
468
1
0
Javascript is not terrible nor difficult. Read this:
http://javascript.crockford.com/javascript.html

Anyone who wants to get into programming should learn what's trending. C# and VB are not trending and it'll get more difficult to find jobs in the future.

No startup would use C#. Enterprises are also moving towards Javascript, Python, and sometimes even Ruby.

If you're going to learn a classic language, might as well learn Java.

What a load of nonsense on the C# front and as for Javascript, that should have stayed what it was(is). Something to just glue webpages together.
 

mikegg

Golden Member
Jan 30, 2010
1,937
535
136
What a load of nonsense on the C# front and as for Javascript, that should have stayed what it was(is). Something to just glue webpages together.

Too bad JS, along with NodeJS, Backbone, Meteor, Angular, and all of the modern frameworks are changing app development in the web and on phones.

If you learn JS, you can make an app once and it'll work in the browser and be accepted on the iOS store and Android store.

That's efficiency. No other language can do this.
 

Cerb

Elite Member
Aug 26, 2000
17,484
33
86
What a load of nonsense on the C# front and as for Javascript, that should have stayed what it was(is). Something to just glue webpages together.
And that thinking is precisely why it is as popular and pervasive as it is. It's the language web pages have to use. So, your server has to be a barrier for it, if it doesn't support it. How much time and code is spent on that? Whether allowing server-side Javascript, integrating support for common libraries, or designing frameworks to aid in integrating your library of choice, not embracing Javascript as the client's language is a way to be left behind, since littering page generation code, or templates, with a bunch of extra IDs and Javascript is not going to make users (devs) happy. Web pages need more than gluing together, these days, and they never got anything better than Javascript. Instead, Javascript has gotten better. Still a terrible back end language, but if the code works well, it's clearly good enough.

Node.js and friends may in technical terms be, erm...less than stellar, but needing to get some basic groundwork done ASAP, they serve a very real and pressing need, and remove a lot of the initial learning curve of common web frameworks. Like BASH, Javascript is available, and just good enough. Once an app is fleshed out enough, the server side can have anything else of your choice gradually replace the Javascript, where most needed (if at all).

As a fad, going all JS will backfire, and so will the NoSQL movement. But, mostly because of managers choosing what they will use based on what's trendy and being talked about, rather than what a good tool set may be. Those choosing for other reasons (like quick initial development, since requirements are never what the client really wants) will also have built in provisions for changing things later, and not miss a beat when it comes time to rewrite, upgrade, improve performance, etc..
 
Last edited:

mosco

Senior member
Sep 24, 2002
940
1
76
What a load of nonsense on the C# front and as for Javascript, that should have stayed what it was(is). Something to just glue webpages together.

C# is a fine language, and you could argue that the tooling around it is second to none. However, senttoschool was right in the sense that unless a startup has roots in the state of Washington, it probably isn't using C#.

Too bad JS, along with NodeJS, Backbone, Meteor, Angular, and all of the modern frameworks are changing app development in the web and on phones.

If you learn JS, you can make an app once and it'll work in the browser and be accepted on the iOS store and Android store.

That's efficiency. No other language can do this.

Hold up there just a minute, I am all for the promoting the usefulness of Javascript, but lets not throw in mobile app development into the mix.

There are so many strong cases to be made for using Javascript in various ways, that we don't need to muddy the water with something so "controversial" (I say this as someone who once worked on a competitor to PhoneGap).
 

Staples

Diamond Member
Oct 28, 2001
4,953
119
106
I only hear of web startups and yes, they don't use C# because it would have to be ASP.net and they'd have to pay for Windows server (which is a minor cost). Startups are usually very money conscious and decide to use php, Ruby and other free constructs. But aside from startups, C# is widely used. And when did we start believing that startups set the trend? They usually use what it the cheapest, not necessarily the best solution.

But as I said, the language does not matter much. Lots of fun to be had and jobs to be found with any of the top ten used languages.
 

mosco

Senior member
Sep 24, 2002
940
1
76
I only hear of web startups and yes, they don't use C# because it would have to be ASP.net and they'd have to pay for Windows server (which is a minor cost). Startups are usually very money conscious and decide to use php, Ruby and other free constructs. But aside from startups, C# is widely used. And when did we start believing that startups set the trend? They usually use what it the cheapest, not necessarily the best solution.

But as I said, the language does not matter much. Lots of fun to be had and jobs to be found with any of the top ten used languages.

I think in a way startups are trend setters. Startups get to use a lot of different new technologies not because they are free and cheap, but because startups don't have to deal with the large institutional way of doing things and don't have massive technical debt in an already established code base.

There are obviously a lot of bad startups out there, but the good ones are doing some amazing technical things, and they probably aren't using C#.
 

mikegg

Golden Member
Jan 30, 2010
1,937
535
136
C# is a fine language, and you could argue that the tooling around it is second to none. However, senttoschool was right in the sense that unless a startup has roots in the state of Washington, it probably isn't using C#.



Hold up there just a minute, I am all for the promoting the usefulness of Javascript, but lets not throw in mobile app development into the mix.

There are so many strong cases to be made for using Javascript in various ways, that we don't need to muddy the water with something so "controversial" (I say this as someone who once worked on a competitor to PhoneGap).

Just saying. Javscript is the only language where you can write an app that will work on the browser && on phones(with something like phonegap).
 

Obsoleet

Platinum Member
Oct 2, 2007
2,181
1
0
I'd vote for JS. But the C# recommendations IMO are nonsense. Mono is a clunky pile, I would never use it- but I've tried. If you're going to use C#, run it as a 1st class citizen- on .Net.
C# is on the good 'language' list but not on the good choice list. It's too tied to .Net and MS and other things which are on their way out the door.
In general, I'd avoid vendor-controlled languages/platforms.

JS, Python are the only things I'd consider. The rest of the stuff, more esoteric like Scala, Erlang, Haskell would be things I'd look at down the road.

I'm doing all my work in Python, but considering putting all my efforts into JS-all-the-things. Reason I haven't is because I like to do things that aren't web-based. You could call it legacy programming, but Python is a good link between the legacy past and to the future. Node is helping change that for JS, but in general, if you're interested in web AND native programming then Python is a no brainer.
 

Obsoleet

Platinum Member
Oct 2, 2007
2,181
1
0
I think in a way startups are trend setters. Startups get to use a lot of different new technologies not because they are free and cheap, but because startups don't have to deal with the large institutional way of doing things and don't have massive technical debt in an already established code base.

There are obviously a lot of bad startups out there, but the good ones are doing some amazing technical things, and they probably aren't using C#.

No one in their right mind is building new product on .Net today. Period.