Jump to content


Photo

Help me choose a language


  • Please log in to reply
24 replies to this topic

#1 Master_Scythe

Master_Scythe

    Titan

  • Hero
  • 20,066 posts
  • Location:QLD

Posted 08 April 2013 - 10:28 PM

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?

Wherever you go in life, watch out for Scythe, the tackling IT support guy.

"I don't care what race you are, not one f*cking bit, if you want to be seen as a good people, you go in there and you f*ck up the people who (unofficially) represent you in a negative light!"


#2 kikz

kikz

    Titan

  • Hero
  • 19,502 posts
  • Location:Your Mums' place ;)

Posted 09 April 2013 - 07:42 AM

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, 09 April 2013 - 07:50 AM.


#3 Xen

Xen

    Overlord

  • Atomican
  • 3,006 posts

Posted 09 April 2013 - 10:32 AM

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.

#4 kikz

kikz

    Titan

  • Hero
  • 19,502 posts
  • Location:Your Mums' place ;)

Posted 09 April 2013 - 10:57 AM

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

#5 Xen

Xen

    Overlord

  • Atomican
  • 3,006 posts

Posted 09 April 2013 - 12:59 PM

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


And i have always been a Linux hippie :)

#6 Master_Scythe

Master_Scythe

    Titan

  • Hero
  • 20,066 posts
  • Location:QLD

Posted 09 April 2013 - 02:44 PM

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 :)

Wherever you go in life, watch out for Scythe, the tackling IT support guy.

"I don't care what race you are, not one f*cking bit, if you want to be seen as a good people, you go in there and you f*ck up the people who (unofficially) represent you in a negative light!"


#7 Xen

Xen

    Overlord

  • Atomican
  • 3,006 posts

Posted 09 April 2013 - 03:15 PM

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.

#8 kikz

kikz

    Titan

  • Hero
  • 19,502 posts
  • Location:Your Mums' place ;)

Posted 09 April 2013 - 03:25 PM

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.

#9 Master_Scythe

Master_Scythe

    Titan

  • Hero
  • 20,066 posts
  • Location:QLD

Posted 09 April 2013 - 05:53 PM

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 :)

Wherever you go in life, watch out for Scythe, the tackling IT support guy.

"I don't care what race you are, not one f*cking bit, if you want to be seen as a good people, you go in there and you f*ck up the people who (unofficially) represent you in a negative light!"


#10 smakme7757

smakme7757

    Champion

  • Atomican
  • 4,205 posts
  • Location:Europe

Posted 11 April 2013 - 07:53 AM

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.

#11 kikz

kikz

    Titan

  • Hero
  • 19,502 posts
  • Location:Your Mums' place ;)

Posted 11 April 2013 - 11:35 AM

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.

#12 Master_Scythe

Master_Scythe

    Titan

  • Hero
  • 20,066 posts
  • Location:QLD

Posted 11 April 2013 - 01:38 PM

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

Wherever you go in life, watch out for Scythe, the tackling IT support guy.

"I don't care what race you are, not one f*cking bit, if you want to be seen as a good people, you go in there and you f*ck up the people who (unofficially) represent you in a negative light!"


#13 kikz

kikz

    Titan

  • Hero
  • 19,502 posts
  • Location:Your Mums' place ;)

Posted 11 April 2013 - 02:56 PM

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

to what? cut your wrists? :p

#14 smakme7757

smakme7757

    Champion

  • Atomican
  • 4,205 posts
  • Location:Europe

Posted 11 April 2013 - 03:56 PM

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.

#15 SledgY

SledgY

    Master

  • Atomican
  • 917 posts

Posted 11 April 2013 - 05:51 PM

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.
poweredbypenguins.org - SledgY lives in the cloud...

#16 Master_Scythe

Master_Scythe

    Titan

  • Hero
  • 20,066 posts
  • Location:QLD

Posted 13 April 2013 - 12:25 PM

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.

Wherever you go in life, watch out for Scythe, the tackling IT support guy.

"I don't care what race you are, not one f*cking bit, if you want to be seen as a good people, you go in there and you f*ck up the people who (unofficially) represent you in a negative light!"


#17 SledgY

SledgY

    Master

  • Atomican
  • 917 posts

Posted 16 April 2013 - 02:06 PM

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.ubu...nguages/python/

Edited by SledgY, 16 April 2013 - 02:07 PM.

poweredbypenguins.org - SledgY lives in the cloud...

#18 SquallStrife

SquallStrife

    Really knows where his towel is

  • Atomican
  • 17,937 posts

Posted 17 April 2013 - 12:56 PM

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.
SyDjDDk.png [retro swim] | AzpUvwG.png @retroswimau | q5O6HgO.png +RetroSwim
四時半を待っています!

#19 hetman

hetman

    Champion

  • Hero
  • 7,093 posts

Posted 15 May 2013 - 06:47 PM

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).
Starczy tego mędrkowania

#20 Nich...

Nich...

    Professional Tart

  • Mod
  • 43,169 posts
  • Location:Mexico

Posted 16 May 2013 - 10:21 AM

+1 powershell/python/HTML5/JS
"I think it is a sad reflection on our civilization that while we can and do measure the temperature in the atmosphere of Venus we do not know what goes on inside our soufflés" -- Nicholas Kurti




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users