Want to learn programming, a few issues

Thatspro

Member
Mar 19, 2011
36
0
0
So i've always wanted to learn how to program, but i don't want to pay for anything. :sneaky: Also, i can't find a modern guide. so if anyone knows a modern eBook for preferably C# programming that'd be nice. Also, i'm not a great self teacher, so can anyone give me any tips on that?
 

Merad

Platinum Member
May 31, 2010
2,586
19
81

Markbnj

Elite Member <br>Moderator Emeritus
Moderator
Sep 16, 2005
15,682
14
81
www.markbetz.net
You don't have to pay. As Merad noted there is a whole set of free tools from Microsoft if you are targeting Windows. If you want to learn something like Python or Ruby you can also do that on Windows for free, or download Virtualbox and set up an Ubuntu VM and install Aptana, Netbeans, or Eclipse. All free.

In terms of books... I don't recommend anyone bother with them at this point. They're just a waste of money and wood pulp. I'd recommend ereader versions but so far programming books haven't translated to the ereader formats very well. Personally I think you can get absolutely everything you need online and in forums like this one.
 

Leros

Lifer
Jul 11, 2004
21,867
7
81
Any particular reason you want to learn C#?

I've found the beginners resources for Java to be better (especially since its often taught at schools as a beginners language). Plus, its cross-platform.
 

Thatspro

Member
Mar 19, 2011
36
0
0
Thanks for the help everyone, and i chose c# because a friend suggested i try it out first and that it's becoming a more useful language, and the fact that i'm not too worried if its cross platform. Thanks again for all the links.
 

cytg111

Lifer
Mar 17, 2008
26,892
16,171
136
Even then, you should identify a problem that you want to solve..
wanna make webpages, goto javascript
wanna make regular apps go java or c#
wanna make the cool and dangerous stuff that chicks dig, hook this, cave that, subvert a kernel? go c/c++ and asm.

edit : for regular apps i came in contact with WPF (C#) some time ago, and it friggin rocks, talk about nice clear seperation. xaml will get up in that from time to time, but nothing compared to the competition.
 
Last edited:

Leros

Lifer
Jul 11, 2004
21,867
7
81
Even then, you should identify a problem that you want to solve..
wanna make webpages, goto javascript
wanna make regular apps go java or c#
wanna make the cool and dangerous stuff that chicks dig, hook this, cave that, subvert a kernel? go c/c++ and asm.

edit : for regular apps i came in contact with WPF (C#) some time ago, and it friggin rocks, talk about nice clear seperation. xaml will get up in that from time to time, but nothing compared to the competition.

WPF is pretty nice. Is there anything like it for Java?
 

GregGreen

Golden Member
Dec 5, 2000
1,688
5
81
http://eloquentjavascript.net/ <-- free book or you can buy a real copy. It's about JavaScript but it's really of a "programming book" as opposed to a JS book in that it talks a lot about the process as opposed to just the language (which at least for JS books, is unique).

http://learnpythonthehardway.org/ <-- Haven't read it and it's not C#, but I've heard it recommended quite often (and it's free), so I've been recommending it myself.
 

Markbnj

Elite Member <br>Moderator Emeritus
Moderator
Sep 16, 2005
15,682
14
81
www.markbetz.net
Most newly created GUIs nowadays are web pages anyway so no big issue IMHO.

Mmm, that's an interesting statement. Probably true, too. But I'm wondering about native apps on iOS and Android. There are a few hundred thousand of those each year.
 

sm625

Diamond Member
May 6, 2011
8,172
137
106
I wish I could understand why they came up with C#... too many languages.
 

Leros

Lifer
Jul 11, 2004
21,867
7
81
Mmm, that's an interesting statement. Probably true, too. But I'm wondering about native apps on iOS and Android. There are a few hundred thousand of those each year.

I know you can use web technologies for creating native apps on iOS. I know nothing about iOS development, so I can't say how it compares to a truly native app.

Example framework:
http://phonegap.com/
 

Modelworks

Lifer
Feb 22, 2007
16,240
7
76
I wish I could understand why they came up with C#... too many languages.

Everybody like to reinvent the wheel assuming they have found the magic formula that will fix all the previous problems.

I like to keep up on the new languages that are in the process of being developed and it is amazing how many never make it past development. The only reason C# exist is because MS has the cash to bankroll it, otherwise it would have been just another failed language.

My favorite language is one many haven't heard about, Erlang. It has some really useful features that other languages lack and wasn't designed as another c based clone.
http://www.erlang.org/
 

Broheim

Diamond Member
Feb 17, 2011
4,587
3
81
Everybody like to reinvent the wheel assuming they have found the magic formula that will fix all the previous problems.

I like to keep up on the new languages that are in the process of being developed and it is amazing how many never make it past development. The only reason C# exist is because MS has the cash to bankroll it, otherwise it would have been just another failed language.

My favorite language is one many haven't heard about, Erlang. It has some really useful features that other languages lack and wasn't designed as another c based clone.
http://www.erlang.org/

in my mind erlang is kind of a niche language, it's a great language but not all that general purpose. if I remember correctly couchdb is written in erlang and a lot telecommunications systems (since it was ericsson that wrote the language in the first place).

it's my understanding that ms came up with c# simply because they were litigated into giving up on j#.
 

Markbnj

Elite Member <br>Moderator Emeritus
Moderator
Sep 16, 2005
15,682
14
81
www.markbetz.net
I wish I could understand why they came up with C#... too many languages.

Well, it makes perfect sense, really. At the time the standard for Windows development was C/C++ and the Win32 API. Microsoft wanted to evolve the Windows API in the direction of a managed environment in order to make development less complex, and provide a more secure environment, and Sun owned Java.
 

Markbnj

Elite Member <br>Moderator Emeritus
Moderator
Sep 16, 2005
15,682
14
81
www.markbetz.net
I know you can use web technologies for creating native apps on iOS. I know nothing about iOS development, so I can't say how it compares to a truly native app.

Example framework:
http://phonegap.com/

Yeah you can use html and javascript to write mobile apps on all the mobile platforms, but there are all sorts of limitations. You can't get the fluid feel of an iPhone app, for example, out of an HTML5 application. In this respect I'm speaking from painful experience, as my team ended up throwing away six weeks of html5 development to rewrite a chunk of an iOS app in Cocoa Touch. Just couldn't make it work well enough for the client, who had the polish of a native app in his mind but didn't want to pay for it. You also can't get access to all the sensors, notifications, etc. There are APIs evolving to address some of this stuff, but as far as I know we're not there yet.
 

Obsoleet

Platinum Member
Oct 2, 2007
2,181
1
0
I'm not unfamiliar with programming, as I've taken multiple (worthless) classes during high school at the local liberal arts college and during my time at my university as well. But in general I'm a noob like yourself, but I've done a shocking amount of time researching this.

For my first real language, I'd choose between Python and Ruby personally. Dabbling in both I'm going forward with Python. Not sure I'll ever devote serious time to Ruby or RoR since Python's environment is the same interpreted, very-high abstraction level as Ruby.

Probably move onto learning a little more about being closer to the iron (C), Java (or ObjC).

I wish I could understand why they came up with C#... too many languages.

C#/.Net = Microsoft's copy of Java.

Any particular reason you want to learn C#?

I've found the beginners resources for Java to be better (especially since its often taught at schools as a beginners language). Plus, its cross-platform.

I would agree, C# is tainted by Microsoft (and this is unfortunate because C# is generally universally liked). You can use C# crossplatform but if I were to take on C# I'd do the official thing (not Mono) or nothing. Unless you have a job lined up to use C#/.Net I wouldn't bother.

It's generally in your best interest to lean towards more 'open source' platforms (not that C# isn't open- but being related to MS it isn't quite as embraced as other choices).

C for lowlevel->Java for intermediate (Java7 performance appears stunning)->Python for rapid application development (high level, slower performance)

If I could snap my fingers and know any two languages and be a master at them, I'd pick Python and C.

Regarding Python, from my work in it so far seems very broad. You can create webapps, use it for scripting (systems or game), crossplatform GUI apps, it's used for hardcore computation by NASA, Youtube is built on it, essentially anything can be done with it. If you're mostly a systems guy like me that has to wear many hats- it's hands down the best choice IMO.
If you're going to be looking at someone elses code, Python is the easiest to read so it's ideal for collaborative work. If you've ever taken a programming class you learned about pseudocode, it's like that but it runs. Just because it's GOOD doesn't mean it's not a noob language or disrespected by programmers though, it's for real. Some professionals view the forced indentation and 1 statement per line as a waste of a developers time. That's fine, as long as I don't have to look at your work or be expected to maintain it. Experts probably have no issue with reading someone's random code, but I do, and I wouldn't want to maintain something I can't easily decipher. Nor would I want to pass on a project I developed, that was hard to understand. To me, that's pretty important and a very nice-to-have for a rapid development language.

Regarding C, it is the basis for most, C++ is more object oriented and thus they had to add two pluses to show how amazingly awesome it is. That said, there's not a lot of uses for C/C++ for those of us who are not career programmers. I have a friend who uses C to program embedded microcontrollers.. that or hardcore game programming in OpenGL or something similar might make it useful.

I'm going to give C a shot sometime, but overall Python and Java should probably be on your shortlist.

Java's a monster, to be respected- holding 16% of all code ever written- http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
You'll see on that list C, Java, C++ and ObjectiveC are the most popular languages in the world. For high level scripting languages, PHP (from my research and every professional developer at my company suggests to avoid) and Python are neck and neck. I'd have to give the blessing to Python. It's just got more respect and it's on it's way up in the world.

If you want something to show you the way, checkout Google Code University. They endorse two languages for teaching at the moment- Python and C++.
http://code.google.com/edu/languages/index.html

Personally, my view is to be well-versed in at least 1 high level language like Python (Ruby is another popular choice but it appears to be losing it's war against Python), and 1 lowlevel language like C. Google Code University reflects this concept. Java could replace C's for for many uses though. Google uses C++, Java and Python.

In my view, with the world going towards webapps + mobile devices, things are really going the way of cutting out the intermediate languages/platforms like C#'s asp.net and Java. People either want rapid development (with decent performance, this is Python), or the most optimized code possible (C/C++ & Java also fills this role).

Something to keep an eye on is Google Go, something Google created because compilation times for C++ can get lengthy (~40+/- min out of the workday multiple times over to test changes), which is why they rely heavily on Python. I'm not sure it will ever leave the hallowed halls of Google, but it is certainly a timesaving, performance environment to work in. It's still in experimental stages, but Go is their contribution to increase productivity like Python but performance of C/C++. This would NOT be a recommended language to study though. :)

The more I've studied Python the past few weeks, the more I'm becoming sold on the overall arena- Python and the associated frameworks are solid and any serious IT professional (systems, programmer, whatever you do) should know it IMO- makes you very well rounded and teaches all the modern programming concepts. So this is from the view of someone who's been slowly indoctrinated, but I think it's all based on sound info.
 

Train

Lifer
Jun 22, 2000
13,599
90
91
www.bing.com
No one ever got sued for using C#, yet MS and Google both got sued for using Java.

MS even has a legally binding promise not to sue.

And yet they call Java "more open".

Some people are just blind.
 

Markbnj

Elite Member <br>Moderator Emeritus
Moderator
Sep 16, 2005
15,682
14
81
www.markbetz.net
Meh, I don't think the whole "open vs. proprietary" distinction is relevant, or even real anymore. The fact is that you can't deliver usable applications until you pick a platform, and once you do that you buy into a whole deep stack of crap. You're going to end up specializing on that delivery platform because you just don't have time to learn that whole pile of technologies over and over again. Half or more of the activity in the software business is mobile these days, and all of those platforms are proprietary in the strictest possible sense, regardless of what language they chose to focus on. On the web side you basically have Microsoft lining up against the whole range of FOSS stacks that loosely start w/Apache. You might make an argument for "open" vs. "closed" there, but I bet the ultimate decision will come down to where the most jobs are to be found.