Jump to content
Sign in to follow this  
Master_Scythe

Help me choose a language

Recommended Posts

So, I've always been the Uber geek. The one who knows too much and wont accept a simple answer. The know it all who hates people saying things like "X is better because Y" when you could say at least another 30 sentences to explore why Y is.

But lately I'm finding I'm lacking the geek factor.

I use a computer every day of my life, for probably 16+ hours a day, and all I can do is set up a network and administer windows servers. Stuff kids can challenge me at (I win, hence my network is still secure, but they're fucking close!)

 

Emotionally, and mentally, regardless of my eyes, I think I need to learn to code... something other than HTML.

I considered learning something like CISCO admin stuff, but I find it impossible to focus on something that I don't feel 'free' exploring. If I'm going to exert my body this much with my lack of vision, its going to be something I need.

 

 

As such, what should I look at? I'm considering C of some sort. C# maybe? followed by parts of C\C++ that are still relevant to extend functionality?

 

On the flip side I had a friend say something I think was accidentally profound. "Everything is web these days"... He's right. Is something like PHP or ColdFusion a smarter thing to learn that may actually be useful in the future?

 

Maybe I should look into whatever is used to create APPS on mobile devices like Android? Learn the AndroidSDK and XML along with it....

 

Perhaps it should be JAVA or even PYTHON? Java is tempting because besides needing a runtime, its truly computer independant, AND can be run from a webpage as an applet?

 

Really I just need opinions. Which is going to be the most 'fun' and useful.

 

Logicaly to me, its going to be a variant of C, or JAVA.

 

Java I guess opens the door to WEB and offline applications.....

 

I trust the community here above all, and would really appreciate an opinion on this decision.

Suggestions friends?

Share this post


Link to post
Share on other sites

You're going to get different answer from many people here, depending on their level of experience AND what they have experience with. My 14 professional years have been spent in applications development, starting with "Line of Business" (LOB) applications, including Accounting packages, stock control, membership management systems, integrated transport ticketing systems; these are applications that businesses use every day in their business operations and range from used for an hour a day to the application used to run the business (mission critical). I then moved on to distributed “enterprise” software, the hard stuff – emergency services computer aided dispatch. Then through to other healthcare (oncology and electronic medicine management) and now the web: high volume media websites, web applications (LOB presented over the web). I’m also actively involved in mentoring startups both for the web and for windows phone (WP8).

 

The WP8 guys are an interesting bunch, and maybe a good model for you. I’m not recommending you develop for WP8 in .NET – but “mobile” is probably a good one to go for. If I was giving 15 years ago me advice, this is what I’d be saying (assuming 15 years ago me is living now ). I’d also definitely learn HTML5/CSS3 and a server side technology. Be it a .NET, Ruby, Java (erkk), whatever. The phone startup guys don’t have a lot of programming experience (as evident by their codebases lol), but you know what? These guys are still making $500+ a week on apps that took then 30-40 hours to develop 12 months ago. Depends what you’re getting into programming for. If it’s to make solutions, then what I just mentioned is great. If it’s to write highly optimised code that doesn’t live anywhere but github (or your own machine) but looks fantastic, then … that’s another discussion ;) (Actually "getting my startup going" is another discussion too, but I digress)

 

It seems you’re an “IT guy” for businesses, so I think it makes sense to learn languages that produce solutions at that level. Look for things that work with and enhance your existing skillset. I suppose you could learn C++, but I don’t see it as relevant for what you’re doing. I’d personally stay away from PHP and particularly Cold Fusion. There’s nothing “wrong” with PHP if you’re looking to slap together something, or even something big *FACEBOOK* (Although there’s a big difference in the FB “php” code ;)). I think selling Java as being “computer independent” (platform agnostic) are gone. Why? The web. It’s everywhere :p With the proliferation of really good JS (javascript libraries), developers can easily write good S.O.L.I.D. code targeted for web and develop snappy (quick) UI’s for end users. Java doesn’t really open the door to web and offline. No more than a whole bunch of other languages. HTML5 does offline and then you can use whatever back end you want (REST)

Personally, my current stack looks like this:

 

Serverside:

- Sql Server 2012

- ASP.NET WebAPI

- NHibernate

- Castle Windsor (an IOC is important!)

- FluentValidators

- NSubstitute (Unit testing)

- NUnit (Unit testing)

- Redis

 

Clientside

- HTML5 & CSS3

- Twitter Bootstrap

- Knockout.js

- Requires.js

- Durandaljs

- Breeze.js

 

The languages you choose also depends on availability of tools, and more. If you’re going to create web sites/apps, and you want a hosted site and don’t want to pay much, you probably should not develop a solution in ASP.NET using Sql Server.

 

There are a bunch of equally awesome languages out there that you can use: Ruby, Python, etc. .Net is just my preference because I’m heavily entrenched in the Microsoft and Enterprise world, where .Net is still king.

 

EDIT: Reiterate - Your friend is right. HTML5 is near ubiquitous now as a presentation level technology. Web is everywhere and you would benefit greatly from knowing how to build applications targeting the web. Mainly because it's complex - thanks to security and allowing for disconnected scenarious, and developing for scale - (which goes beyond simply saying "Cloud all the things"). The benefit of Web, is the same back end services can and will be used to talk to mobile phone apps. Most phone apps need a database to access, or at least a set of other services. The phone is just another presentation layer device, be it a phone app or a website on the phone (which is no different than a website anywhere else).

Edited by kikz

Share this post


Link to post
Share on other sites

So, I've always been the Uber geek. The one who knows too much and wont accept a simple answer. The know it all who hates people saying things like "X is better because Y" when you could say at least another 30 sentences to explore why Y is.

But lately I'm finding I'm lacking the geek factor.

I use a computer every day of my life, for probably 16+ hours a day, and all I can do is set up a network and administer windows servers. Stuff kids can challenge me at (I win, hence my network is still secure, but they're fucking close!)

 

Emotionally, and mentally, regardless of my eyes, I think I need to learn to code... something other than HTML.

I considered learning something like CISCO admin stuff, but I find it impossible to focus on something that I don't feel 'free' exploring. If I'm going to exert my body this much with my lack of vision, its going to be something I need.

 

 

As such, what should I look at? I'm considering C of some sort. C# maybe? followed by parts of C\C++ that are still relevant to extend functionality?

 

On the flip side I had a friend say something I think was accidentally profound. "Everything is web these days"... He's right. Is something like PHP or ColdFusion a smarter thing to learn that may actually be useful in the future?

 

Maybe I should look into whatever is used to create APPS on mobile devices like Android? Learn the AndroidSDK and XML along with it....

 

Perhaps it should be JAVA or even PYTHON? Java is tempting because besides needing a runtime, its truly computer independant, AND can be run from a webpage as an applet?

 

Really I just need opinions. Which is going to be the most 'fun' and useful.

 

Logicaly to me, its going to be a variant of C, or JAVA.

 

Java I guess opens the door to WEB and offline applications.....

 

I trust the community here above all, and would really appreciate an opinion on this decision.

Suggestions friends?

As Kikz said you will probably have as many answers to this question at there are people / programming languages.

 

C is fun to learn but you will probably never end up using it functionally unless you want to really get into systems development, C++ is the mutant, fat retarded distant relative of C and it's best to stay well away from it.

 

Java is good as a language but i have issues with a lot of lazy Java programmers and their memory management (or lack of) but you will have a huge community of support.

 

Python is probably my favorite language, mainly due to it being the main language i work with now... it's fast to use, clean and there is very little i haven't been able to do with it.

 

You can use it to create web apps... Give Django a go.

 

Coldfusion needs to be stabbed in the face... it's a clean and very easy language but i hate anything that locks you in.

 

We are currently porting 10 years worth of code from CF9 to either Open Bluedragon or Railio, CF is fine to code in but like every other language learn to create code that is either portable or easy enough to be made portable.

 

PHP is rather powerful it can be annoying at times but combined with sprinklings of Java script it is a tank of a language when it comes to web development, just make sure you write you code cleanly and comment well.

 

I can't comment on any of the solutions Kikz has recommended though... It seems everything he does is windows based where as everything i do is Unix / Linux based.

Share this post


Link to post
Share on other sites

Yeh. I am and have always been a Microsoft whore-bag.

Share this post


Link to post
Share on other sites

Yeh. I am and have always been a Microsoft whore-bag.

And i have always been a Linux hippie :)

Share this post


Link to post
Share on other sites

Python means the GF and I could learn together as shes doing it in Uni, but Java seems that much more powerful (I just need to look at Twitter, or Limewire to see what can be done).

 

HTML5 to be honest I have no knowledge of. I know from an end user what it can be used for (such as removing flash player and calling video directly) and I know things like Ubuntu Mobile apps are written almost entirely in HTML5; as are a few iOS apps i believe?

 

I think my own in-head vision is a language which will allow me to do geeky tasks offline as a stand alone executable, but still allow a possible future with web development.

 

thanks so far guys :)

Share this post


Link to post
Share on other sites

Python means the GF and I could learn together as shes doing it in Uni, but Java seems that much more powerful (I just need to look at Twitter, or Limewire to see what can be done).

 

HTML5 to be honest I have no knowledge of. I know from an end user what it can be used for (such as removing flash player and calling video directly) and I know things like Ubuntu Mobile apps are written almost entirely in HTML5; as are a few iOS apps i believe?

 

I think my own in-head vision is a language which will allow me to do geeky tasks offline as a stand alone executable, but still allow a possible future with web development.

 

thanks so far guys :)

If the GF is learning python one thing you could look at is py2exe if you want to run python apps as a binary exe.

Share this post


Link to post
Share on other sites

Python means the GF and I could learn together as shes doing it in Uni, but Java seems that much more powerful (I just need to look at Twitter, or Limewire to see what can be done).

 

HTML5 to be honest I have no knowledge of. I know from an end user what it can be used for (such as removing flash player and calling video directly) and I know things like Ubuntu Mobile apps are written almost entirely in HTML5; as are a few iOS apps i believe?

 

I think my own in-head vision is a language which will allow me to do geeky tasks offline as a stand alone executable, but still allow a possible future with web development.

 

thanks so far guys :)

Sounds like you've already made your mind up. Python.

 

FWIW HTML5 is also used to make windows 8 apps in Metro. "geeky tasks like stand alone executable"? That pretty much means C, C++ etc and rules out interpreted languages like Java and C#, but I think you mean desktop applications, rather than native applications (those without a sandbox/runtime)? Frankly C# (or VB.NET) is good here if you're dealing with windows OS's as they're likely to have .NET framework installed (forget that JRE virus shit :p). In the corp environment, ClickOnce takes care of that anyway. Go learn powershell, that'll allow geeky tasks. so what if it's not an executable :p

 

There's not a lot of point in recommending a language, especially as you've pointed out you've said you have no goal (Well, other than python anyway) ;)

 

Also, making an exe and doing web development are two completely different things (at least as they stand in your mind). Any web development is going to require Javascript and HTML. Any. Building a Web App is going to require that and some server side code. be cool and learn node.js :p Also web versus desktop requires a completely differeny way of thinking. I don't recommend trying considering them together.

Share this post


Link to post
Share on other sites

ill give Python a go then.

Only thign I need to get my head around is how to make a GUI with it... but that'll come in time.

 

PyQT it seems :)

Share this post


Link to post
Share on other sites

Some pretty good advice here. I've been getting stuck into C# and WP8 recently. mostly just designing apps or desktop apps to do tasks that i cbf to do myself. Personally i don't feel that confident as a programmer however i found i gained more interest in programming when i could apply it in a way that it was useful.

 

1st eample. Had a job where i had to look for matches in 2 lists in excel. I made a program that did it for me. Before i made the software it took about 3 hours, now it takes 3 seconds :D.

 

2nd example: Made a small application to give me my current co-ordinates, LAN IP and Public IP on my Lumia 920.

 

Now i'm just playing with WP8. Most of my stuff is simple, but actually making something i can use is much more motivating than making stuff that just sits in My Documents.

 

So yea, for me C# is what i'm looking at at the moment. Most people at uni tells me it's a dead end, but i doubt i'll ever get employed as a programmer, so i'm in it for the luls atm.

 

The next thing on my list is Powershell which i really need to start learning.

Share this post


Link to post
Share on other sites

smakme7757, interesting ppl at uni say c# is a dead end. Probably just MS haters. I remember when I was at uni, other uni-students would hang shit on Visual Basic - yet it was the most popular and widely used language in the business world (pre 2000 :)). Jobs in .NET, and espically C# are probably still hte most demanded development jobs in australia, going by Seek.

Share this post


Link to post
Share on other sites

the more I see JAVA the more it tempts me....

to what? cut your wrists? :p

Share this post


Link to post
Share on other sites

smakme7757, interesting ppl at uni say c# is a dead end. Probably just MS haters. I remember when I was at uni, other uni-students would hang shit on Visual Basic - yet it was the most popular and widely used language in the business world (pre 2000 :)). Jobs in .NET, and espically C# are probably still hte most demanded development jobs in australia, going by Seek.

MS haters wouldn't be far from the truth. Personally i really enjoy the combination of resharper and Visual Studio. It held my hand in the beginning and gave me more options as i get more proficient in the language.

Share this post


Link to post
Share on other sites

the more I see JAVA the more it tempts me....

to what? cut your wrists? :p

 

or drown in XML? ;)

 

C# is a lot nicer to code than Java.

 

Then again I prefer Python to any of them!

 

For gui's in Python though also check out PyGTK (for GTK bindings) or WxPython which provides platform native widgets across several platforms.

Share this post


Link to post
Share on other sites

okokok, i'll start with python :P

I just read the ORACLE beginners guide to java and it seemed as easy as breathing to get the basics.

What lured me? Knowing that things like Limewire, Twitter, and Minecraft are powered by JAVA. The power and range of uses in real world application impressed me.

 

I'll try python then.

Share this post


Link to post
Share on other sites

okokok, i'll start with python :P

I just read the ORACLE beginners guide to java and it seemed as easy as breathing to get the basics.

What lured me? Knowing that things like Limewire, Twitter, and Minecraft are powered by JAVA. The power and range of uses in real world application impressed me.

 

I'll try python then.

You could make similar comments about most languages.

 

For python though, you have Dropbox client, Reddit, many of the leading 3D graphics packages (Maya etc) for scripting not to mention large chunks of Ubuntu.

 

While Ubuntu and the applications that come with Ubuntu are written in many different languages, from C to Java to Haskell, when writing something new we recommend using Python. Many important parts of Ubuntu are already written directly in Python, and we work to make every important API and framework within Ubuntu available from Python. Python includes a rich standard library and a vast set of third party modules, so there are libraries available for just about everything you can think of.

http://developer.ubuntu.com/resources/prog...nguages/python/ Edited by SledgY

Share this post


Link to post
Share on other sites

okokok, i'll start with python :P

I just read the ORACLE beginners guide to java and it seemed as easy as breathing to get the basics.

What lured me? Knowing that things like Limewire, Twitter, and Minecraft are powered by JAVA. The power and range of uses in real world application impressed me.

 

I'll try python then.

Java in general is quite resource intensive to run, Dalvik notwithstanding.

 

Python and others are a bit nicer for platforms other than desktop PCs.

Share this post


Link to post
Share on other sites

Sounds like you've already made up your mind so I'll +1 for Python. It's not the most interesting language but it's probably one of the cleanest and easiest to grasp and probably the one I would recommend to anyone learning their first language. The only downside is that GUI programming is a pain if it's not something you're familiar with.

 

Java is not a nice language, the power is really in the platform and libraries... a lot of which are also not very nice to work with but there's pretty much libraries for anything you could imagine. It's not as fast as C/C++ but it's probably the next best thing. Also nice if you want to get into Android programming or some heavy duty large applications. Also the IDE tools are much nicer than a language like Python (which means easier to do GUIs, debugging, etc).

 

C... if Python was the high pressure hose you use to clean your driveway, then C is a toothbrush. You can definitely do a more thorough job with a toothbrush. Unless you're planning to write Linux kernel drivers or are finding you're hitting performance barriers in languages like Python, you probably won't need it.

 

Ruby is a really nice language. It's great for writing glue code if you're doing admin stuff, the syntax is incredibly expressive and is a joy to work with. If you were getting into backend web server programming for the first time I would probably recommend Ruby because the ecosystem for this is so well developed and it'll be easy to learn a lot about the right way of doing things. I would suggest staying away from PHP here because it's not terribly nice and it would probably teach you some very bad habits. Ruby and Python are similar in where you can use them.

 

Finally there is JavaScript. This one is worth looking at in the future. The available VMs mean it's faster than Python or Ruby. You can use it to do both backend webserver stuff (though not as easy as Ruby for beginners) or frontend web browser stuff. For the backend you'd want to become familiar with Node.js, and for the frontend you'd need HTML5/CSS3. There's tools that combine both Node.js and HTML5 to let you create standalone desktop apps. There are also tools (like PhoneGap) to let you wrap up your JavaScript/HTML5 app in a native outer shell for deployment on any of the popular smart phone platforms. The caveat for phone apps is that it's not as fast as more low level languages so you wouldn't want to use it for things like games (but as hardware and JavaScript VMs keep improving this might very well change... there was a recent tech demo showing off the Unreal Engine running in Firefox).

Share this post


Link to post
Share on other sites

Playing the devils advocate re Java

It's not as fast as C/C++ but it's probably the next best thing.

Not exactly true, in some use cases this is correct but in others it doesn't hold. A virtual machine with a garbage collector has some advantages for the optimisation of memory allocation and can actually outperform pure C/C++.

 

For somebody new to programming I would advocate against JavaScript being the first language. Yes node.js has moved JS server side but the language itself is actually rather complex and has a lot of warts and pitfalls that are not obvious to a beginner. JavaScript is essentially Scheme with a Java-like syntax and was developed in a very short period (several months). Get to know a better designed language before diving into JavaScript and when you do use jslint to ensure you don't fall into these traps.

 

Examples of common gotchas:

  • Forgetting to use var for a variable creates a global variable (can have difficult to debug side effects).
  • The foreach can have un-expected values unless an appropriate guard is used.
Edited by SledgY

Share this post


Link to post
Share on other sites

ill give Python a go then.

Posted Image

 

I've always wanted to learn a language, but never really know what I'd use it for, or what I'd create with it. As such, I never have. Let us know how you go :)

Edited by Electr0

Share this post


Link to post
Share on other sites

ill give Python a go then.

Posted Image

 

I've always wanted to learn a language, but never really know what I'd use it for, or what I'd create with it. As such, I never have. Let us know how you go :)

 

There are actually a few python easter-eggs, from the python interpreter:

import antigravity

import this

import __hello__

Share this post


Link to post
Share on other sites

Scythe I am learning java too, You can get the learning java the hardway of the net and I am also using pythonista on my ipad. Its fun so far.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×