|
|
 |
|
01-07-2013, 11:32 PM
|
#51
|
|
Lifer
Join Date: Oct 2006
Location: Delaware
Posts: 17,764
|
I'd go with Java. It's of intermediate difficulty, is directly applicable and useful to many areas, and will serve as a serious leg-up on essentially any language you decide to take on after it.
Python for scripting. Hands down. Ridiculously simple syntax in most cases and very effective, also readily applicable to many careers.
Personally I'm one of those weird people who prefers c/c++ due to the extreme level of control it provides, but then again my interests and likely career lie with low-level work on computer hardware of some variety. Even I'll admit that it's much easier to debug when you have an intermediate piece of software, written in c++, doing all of the real work for you.
Mastery of manual memory management will set you free.
|
|
|
01-08-2013, 12:40 AM
|
#52
|
|
Lifer
Join Date: May 2003
Location: Canada
Posts: 20,611
|
C++, it's not controlled by any corporation, is fairly universal, and is very powerful.
For scripting, it's a tougher choice as they all have their uses. Php for web (but can be used at the command line too), perl is fairly well known and universal, and so is python. I think I'd probably go with Python.
__________________
~Red Squirrel~
That if you confess with your mouth, "Jesus is Lord," and believe in your heart that God raised him from the dead, you will be saved. For it is with your heart that you believe and are justified, and it is with your mouth that you confess and are saved. Romans 10:9-10
|
|
|
01-08-2013, 08:30 AM
|
#53
|
|
Golden Member
Join Date: Feb 2008
Posts: 1,468
|
IMO, Python. You'll want Python for scripting anyway - why not use it for larger apps as well?
If you run into a problem Python is bad at solving, that's the time to pick up something else in addition.
Say you find you want to develop for Android - you might pick up Java. Or you get interested in computer graphics, you might go for C++. Or you want to do something with a cheap Linux system-on-a-chip, you might go for C. Or you find yourself dealing with scientist or analyst types at work who use Clojure or F# or some domain-specific thing, and have a good opportunity to learn whatever they are using.
When you know Python well, if you have no real need for another language but just want to learn programming more deeply, I think I'd recommend diving into low level stuff and learning C. Then, maybe, jumping to the very high level and learning something like Haskell.
|
|
|
01-08-2013, 09:00 AM
|
#54
|
|
Lifer
Join Date: Oct 2006
Location: Delaware
Posts: 17,764
|
Quote:
Originally Posted by Pia
IMO, Python. You'll want Python for scripting anyway - why not use it for larger apps as well?
If you run into a problem Python is bad at solving, that's the time to pick up something else in addition.
Say you find you want to develop for Android - you might pick up Java. Or you get interested in computer graphics, you might go for C++. Or you want to do something with a cheap Linux system-on-a-chip, you might go for C. Or you find yourself dealing with scientist or analyst types at work who use Clojure or F# or some domain-specific thing, and have a good opportunity to learn whatever they are using.
When you know Python well, if you have no real need for another language but just want to learn programming more deeply, I think I'd recommend diving into low level stuff and learning C. Then, maybe, jumping to the very high level and learning something like Haskell.
|
Just an amendment, if he's going to jump into the weird world of functional programming I'd reccomend Lisp as opposed to Haskell. If nothing else because it has a kick-ass book: http://www.amazon.com/Land-Lisp-Lear...&keywords=Lisp
|
|
|
01-09-2013, 12:24 AM
|
#55
|
|
Diamond Member
Join Date: Oct 2001
Posts: 3,794
|
Lots of recommendations for Python (and I agree with this recommendation) but something I never hear anything about is, Python 2.x or Python 3.x? Django and I am sure a lot of other frameworks are not yet compatible with Python 3 (which is amazing since it has been out for 2+ years).
|
|
|
01-09-2013, 12:55 PM
|
#56
|
|
Golden Member
Join Date: Oct 2007
Location: CHICAGO (South Loop)
Posts: 1,950
|
Quote:
Originally Posted by irishScott
|
LISP and C are RMS's favorite languages. While I think C has obviously held up, and will likely never have a replacement for true low level work, I'm not sure I'd try some Lisp myself. Just from a pragmatic viewpoint.
He says to anyone who wants to learn another programming language to definitely include Lisp on that list due partially to the read-eval-print loop.
Of all the stuff out there other than Python and C, Golang is my 3rd interest. I'd have a tough time deciding between starting to learn more about C or Go, between the two. I'm not sure I'd use either very much. C would probably be the safer bet and the standard academic learning exercise about low level programming.
Quote:
Originally Posted by Staples
Lots of recommendations for Python (and I agree with this recommendation) but something I never hear anything about is, Python 2.x or Python 3.x? Django and I am sure a lot of other frameworks are not yet compatible with Python 3 (which is amazing since it has been out for 2+ years).
|
I learned on Python 2.x, and use Python 3.x. Not sure it matters what you learn on.
The 2.x vs 3.x issue is mainly for people who have built very large applications over many years with reliance on large external library dependencies that haven't been ported over. And it's not so much that porting it is difficult, it's also that they don't want to have to drop support for the 2.x world.
You can write 2.x code that works on both interpreters but not everyone wants to go to that trouble with preexisting code either.
I just write 3.x code and prefer to stay in the 3.x world. Since most of my work is trivial, it's the right move for everyone though if it's a possibility.
There's enough to learn that I don't think it matters what version you learn on, and if you've never programmed at all and don't know what a function is, I'd argue it even matters less what language you 1st learn.
That said, if one sees things as I do, Python is both the ideal learning language and the ideal general purpose language. There's no reason to not do some research and find the best-bet from the start. It will save you some time later on. Unless you view it as a strictly academic exercise, then start with C, then go to Python. I don't recommend that unless you're a masochist or trying to show off how dedicated you are.
I view everything else besides Python as best tool for a niche, ie C# .Net for Windows. I wouldn't bother just to make a Windows application though eg. my Python GUI apps run well under Windows.
Django has Python3 support now. It's labeled as experimental the last I checked but it's there.
__________________
Intel C2Q 9450@3ghz | Intel X25-M G2 160GB | MSI Radeon 5870 (on latest WHQL)
Ubuntu 12.04LTS + Win7Pro64 | 8GB Mushkin XP2-6400 (4-4-4-12) | Lian Li PC-A05NB
Asus P5Q-E (P45 / ICH10R) | Corsair HX650 | Asus U3S6 | Asus VS278Q-P + Dell 2005FPW
+ Samsung PN50B650 | External Seagate GoFlex 1.5TB USB 3.0 + External LiteOn IHES208 BR
________________
Linus on Nvidia
Last edited by Obsoleet; 01-09-2013 at 03:00 PM.
|
|
|
01-09-2013, 04:49 PM
|
#57
|
|
Lifer
Join Date: Nov 2004
Location: Somewhere over the rainbow
Posts: 31,790
|
Quote:
Originally Posted by irishScott
|
Thanks for the discussion guys. I've been watching, but not participating as I didn't have anything intelligent to add. Seeing lisp mentioned caught my eye though. I mentioned programming calculators, and those happened to HPs, and I used a lisp variant. That was decades ago, but I imagine some of that would come back, and there would be some familiarity. How useful is lisp in modern computing?
__________________
The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man.
|
|
|
01-09-2013, 06:21 PM
|
#58
|
|
Elite Member
Join Date: Dec 1999
Location: Colorado
Posts: 7,319
|
From what I can tell, HP's "Reverse Polish Lisp" is a lot more like BASIC than like Lisp. It's not really a "functional" language.
|
|
|
01-09-2013, 06:31 PM
|
#59
|
|
Lifer
Join Date: Nov 2004
Location: Somewhere over the rainbow
Posts: 31,790
|
Quote:
Originally Posted by Ken g6
From what I can tell, HP's "Reverse Polish Lisp" is a lot more like BASIC than like Lisp. It's not really a "functional" language.
|
Gotcha. I had done a bit of playing with system RPL and assembler, but in the last case particularly, I didn't know what I was doing, and I was crashing my machine. That wasn't good at all since I needed it for work, so I was reluctant to really push things.
__________________
The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man.
|
|
|
01-09-2013, 07:55 PM
|
#60
|
|
Senior Member
Join Date: Aug 2002
Posts: 583
|
Quote:
Originally Posted by lxskllr
Thanks for the discussion guys. I've been watching, but not participating as I didn't have anything intelligent to add. Seeing lisp mentioned caught my eye though. I mentioned programming calculators, and those happened to HPs, and I used a lisp variant. That was decades ago, but I imagine some of that would come back, and there would be some familiarity. How useful is lisp in modern computing?
|
It's actually very useful and relevant. Several posters have mentioned Clojure already--it's a Lisp dialect.
Clojure was initially designed to target the Java Virtual Machine, but now it also supports the .NET Framework and JavaScript. It's a superb language, especially when compared to Java.
Clojure, Scala, F# and similar are great because they join elegant and powerful languages with the extensive framework/library support that used to only exist for mainstream languages. No more forced choice between good language + crap libraries or lame language + good libraries.
|
|
|
01-13-2013, 01:45 PM
|
#61
|
|
Senior Member
Join Date: Oct 2000
Posts: 667
|
My current go to languages:
C#, Python
I don't think one can ignore JavaScript though, it's a pretty ugly language, far from my favourite but a necessity for client side web programming. Node.js is also pretty cool. The popularity of the iPhone means Objective-C is also fairly popular, not a language I enjoy but it gets the job done just fine.
|
|
|
01-15-2013, 01:33 AM
|
#62
|
|
Senior Member
Join Date: Oct 1999
Posts: 525
|
Mainly Java and Python.
R for statistical analysis. Reading R in Action and playing with it in R studio has been some of the most enjoyable programming in a long time.
My limited brain has no room for any other languages
__________________
home: Asus P7P55D-E Deluxe -- Intel i5-760 @3.6ghz -- MSI 560GTX-Ti TFII @950/1900/2200 2x (SLI) -- Crucial 16gb 1.5v DDR3 -- Windows 7 64-bit
work: 2011 Macbook Pro 15" -- 16gb DDR3 -- MacOSX 10.7.x
My MSI 560GTX-Ti Twin Frozr SLI benchmarks
|
|
|
01-15-2013, 04:49 PM
|
#63
|
|
Diamond Member
Join Date: Oct 1999
Posts: 3,326
|
Quote:
Originally Posted by postmortemIA
C++. Does everything that C and Java can do, and that's pretty much everything.
|
Except it can't rewrite its own code on the fly, like LISP can... Not that I would ever tell anyone to ever learn LISP (unless they are dealing with AI).
As for my choices:
Scripting: Perl or Python (really can't go wrong with knowing either. Perl can be easier to pickup sometimes if you know another language already since just about every other language's syntax found its way into Perl. But it also means there are 1000 ways to do everything in Perl, so looking at someone else's Perl code can be like looking at an ancient cuneiform text from Sumeria).
Real language: C or C++ (They are the backbone language of just about everything. Window kernel is C. Unix kernel is C. Linux kernel is C and being ported to C++ (may have already been completed). Mac OS kernel is C++. In other words, anything and everything important is done in C or C++.).
__________________
We were all warned of MS problems many years ago; remember how the Magic 8 Ball always said: "Outlook not so good"?
Server
HTPC
Last edited by Fallen Kell; 01-15-2013 at 04:58 PM.
|
|
|
01-23-2013, 01:00 PM
|
#64
|
|
Golden Member
Join Date: Oct 2007
Location: CHICAGO (South Loop)
Posts: 1,950
|
Update from the OP?
I think the answer is clear (being outright biased) that Python gives you a good tool for crossplatform GUI apps, webapps, scripting, whatever usecase you have. Add in it has access to the Java world with Jython and .Net world with IronPython.. and you have the best swiss army knife in existence.
No brainer and one of the places to learn to code too.
I'm personally not big on statically typed, compiled and the only one I'd learn out of the pure desire to learn would be C. C is simply not going away as quickly as the rest, the standard for embedded microcontrollers, standard for device drivers, OSs and used for many performance intensive local apps.
C works in tandem with Python as well. I view everything other than Python/C as the 'best tool for a given job'. ObjC for Apple, Erlang for distributed systems, the Java and .Net world I'd target with Jython or IronPython.
So what is it OP? Python and C? Something else?
__________________
Intel C2Q 9450@3ghz | Intel X25-M G2 160GB | MSI Radeon 5870 (on latest WHQL)
Ubuntu 12.04LTS + Win7Pro64 | 8GB Mushkin XP2-6400 (4-4-4-12) | Lian Li PC-A05NB
Asus P5Q-E (P45 / ICH10R) | Corsair HX650 | Asus U3S6 | Asus VS278Q-P + Dell 2005FPW
+ Samsung PN50B650 | External Seagate GoFlex 1.5TB USB 3.0 + External LiteOn IHES208 BR
________________
Linus on Nvidia
|
|
|
01-23-2013, 08:17 PM
|
#65
|
|
Lifer
Join Date: Nov 2004
Location: Somewhere over the rainbow
Posts: 31,790
|
Quote:
Originally Posted by Obsoleet
So what is it OP? Python and C? Something else?
|
Python and Java. I'm getting a little old for something like C. This is just for my amusement, and for /possible/ use in a business setting, but at this point a career isn't likely.
Python has wide use, and can be used for simple and complicated tasks. My Java desire is almost exclusively for Android use, but it's nice because it's cross platform. For Android specifically, I have source code I can look at, and I have a real use for it. I'd like to modify and extend existing programs for my own use. Also, there's a real lack of GPL apps in the market. If I somehow came up with something worth using by others, I'd like to release it under the GPL and fill out the market by a little bit.
__________________
The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man.
|
|
|
01-23-2013, 10:18 PM
|
#66
|
|
Golden Member
Join Date: Oct 2007
Location: CHICAGO (South Loop)
Posts: 1,950
|
Cool, sounds like good choices. Python can do heavy lifting, it's a bonefide powerhouse language. If you just learned that, you're a 'real' programmer. It's not 2013's version of VB6, contrary to static typing elitists. Dynamic typing is the future, the stuff that truly 'needs' static typing is best met with C.
My opinion of course, but kernels, drivers, large apps are all written in it. I'm with Linus Torvalds that you either want as low level as possible, with something manageable for large projects- or go straight to the top and gain all the niceties of the dynamically typed, garbage collected, interpreted languages.
I write off most static typed languages besides C for that reason. We will need static typed languages for the foreseeable future. But I think as the world increasingly goes towards 99.9999 (six 9's, nine 9's, whatever) uptime for internet services and applications.. we'll see dynamically typed languages like Erlang become more important. Erlang was developed to meet a goal of 4 minutes downtime a year. You can't do that with much else. Not saying run out and learn it, just that stuff like that is what to keep an eye out for.
That said, similar to IronPython and Jython- you can write C using Cython, so no real need to learn it for most of us.
Java is one of the biggest boys on the block though, there's certainly reasons to jump into one of the big two (C# or Java) but Java is platform independent.
You can't go wrong with time spent in either choice. You have two worthy endeavors charted out. Best of luck.
__________________
Intel C2Q 9450@3ghz | Intel X25-M G2 160GB | MSI Radeon 5870 (on latest WHQL)
Ubuntu 12.04LTS + Win7Pro64 | 8GB Mushkin XP2-6400 (4-4-4-12) | Lian Li PC-A05NB
Asus P5Q-E (P45 / ICH10R) | Corsair HX650 | Asus U3S6 | Asus VS278Q-P + Dell 2005FPW
+ Samsung PN50B650 | External Seagate GoFlex 1.5TB USB 3.0 + External LiteOn IHES208 BR
________________
Linus on Nvidia
|
|
|
01-23-2013, 10:35 PM
|
#67
|
|
Lifer
Join Date: May 2003
Location: Canada
Posts: 20,611
|
I barely know python but I used it to do a serial read of an arduino device and it's MUCH easier to do that with python than say, C++. So it can definitely do a lot of cool stuff and it's easier.
Another cool thing with python is that you can use it as a command line calculator. Just type "python" and then you can start typing equations. Code too of course, which is awesome if you want to experiment with code on the fly.
__________________
~Red Squirrel~
That if you confess with your mouth, "Jesus is Lord," and believe in your heart that God raised him from the dead, you will be saved. For it is with your heart that you believe and are justified, and it is with your mouth that you confess and are saved. Romans 10:9-10
|
|
|
01-23-2013, 10:41 PM
|
#68
|
|
Golden Member
Join Date: Oct 2007
Location: CHICAGO (South Loop)
Posts: 1,950
|
Raspberry Pi is another big reason for Python. You can do anything with those. I think it supports more than just Python (C I think and some form of Basic), but Python is the standard language.
__________________
Intel C2Q 9450@3ghz | Intel X25-M G2 160GB | MSI Radeon 5870 (on latest WHQL)
Ubuntu 12.04LTS + Win7Pro64 | 8GB Mushkin XP2-6400 (4-4-4-12) | Lian Li PC-A05NB
Asus P5Q-E (P45 / ICH10R) | Corsair HX650 | Asus U3S6 | Asus VS278Q-P + Dell 2005FPW
+ Samsung PN50B650 | External Seagate GoFlex 1.5TB USB 3.0 + External LiteOn IHES208 BR
________________
Linus on Nvidia
|
|
|
01-23-2013, 10:47 PM
|
#69
|
|
Lifer
Join Date: May 2003
Location: Canada
Posts: 20,611
|
I keep forgetting about Raspberry Pi. I need to see if I can buy these in Canada and start messing around.
__________________
~Red Squirrel~
That if you confess with your mouth, "Jesus is Lord," and believe in your heart that God raised him from the dead, you will be saved. For it is with your heart that you believe and are justified, and it is with your mouth that you confess and are saved. Romans 10:9-10
|
|
|
01-24-2013, 12:59 PM
|
#70
|
|
Diamond Member
Join Date: Dec 2004
Posts: 6,279
|
As a scientific programmer (and computational scientist), i have only ever needed/used matlab/C/C++/Python. I hate bash/awk/tcl and all those mess of scripting languages. That is my $0.02 if you wanted to go the science route.
|
|
|
01-24-2013, 09:36 PM
|
#71
|
|
Diamond Member
Join Date: Sep 2000
Location: A nomadic herd of wild fainting goats
Posts: 9,533
|
Quote:
Originally Posted by Obsoleet
Raspberry Pi is another big reason for Python. You can do anything with those. I think it supports more than just Python (C I think and some form of Basic), but Python is the standard language.
|
Raspberry pi is an ARM architecture. Its default OS is debian (linux) based. Those two things mean that you can pretty much run any language you fancy with it, certainly every language mentioned in this thread.
__________________
CogBlog - Random Babblings of Cogman mainly focused on software.
|
|
|
01-25-2013, 11:03 PM
|
#72
|
|
Golden Member
Join Date: Oct 2007
Location: CHICAGO (South Loop)
Posts: 1,950
|
Quote:
Originally Posted by Cogman
Raspberry pi is an ARM architecture. Its default OS is debian (linux) based. Those two things mean that you can pretty much run any language you fancy with it, certainly every language mentioned in this thread.
|
Well, not C# on .Net.
But certainly, you can fire up Erlang or C# Mono on one. You can 'run' almost any platform/language you want on it.
I don't have one, but I'm guessing the inner workings to the hardware are easily accessible via Python.
Using anything else probably means diving into C and abstracting it out again yourself.. which is already done for you on RaspberryPi via Python.
__________________
Intel C2Q 9450@3ghz | Intel X25-M G2 160GB | MSI Radeon 5870 (on latest WHQL)
Ubuntu 12.04LTS + Win7Pro64 | 8GB Mushkin XP2-6400 (4-4-4-12) | Lian Li PC-A05NB
Asus P5Q-E (P45 / ICH10R) | Corsair HX650 | Asus U3S6 | Asus VS278Q-P + Dell 2005FPW
+ Samsung PN50B650 | External Seagate GoFlex 1.5TB USB 3.0 + External LiteOn IHES208 BR
________________
Linus on Nvidia
|
|
|
01-26-2013, 08:51 AM
|
#73
|
|
Diamond Member
Join Date: Sep 2000
Location: A nomadic herd of wild fainting goats
Posts: 9,533
|
Quote:
Originally Posted by Obsoleet
Well, not C# on .Net.
But certainly, you can fire up Erlang or C# Mono on one. You can 'run' almost any platform/language you want on it.
I don't have one, but I'm guessing the inner workings to the hardware are easily accessible via Python.
Using anything else probably means diving into C and abstracting it out again yourself.. which is already done for you on RaspberryPi via Python.
|
One of the benefits of using linux is how easy it makes it to interact with the hardware. Hardware handles are simply files that you interact with. In other words, want to turn a light on? Simply write 1 to the "turn light on" file.
Any language that supports FileIO is going to be able to play with the hardware pretty seamlessly.
__________________
CogBlog - Random Babblings of Cogman mainly focused on software.
|
|
|
01-27-2013, 11:29 AM
|
#74
|
|
Golden Member
Join Date: Oct 2007
Location: CHICAGO (South Loop)
Posts: 1,950
|
I'll take your word for it. I don't have one, and not to extend a thread that has gone beyond its purpose, but was looking to pick one up to control a light, problem was finding a way to interface with the light to turn it on and off. It had no hardware interface and finding a power adapter that could be controlled was tough (for cheap).
__________________
Intel C2Q 9450@3ghz | Intel X25-M G2 160GB | MSI Radeon 5870 (on latest WHQL)
Ubuntu 12.04LTS + Win7Pro64 | 8GB Mushkin XP2-6400 (4-4-4-12) | Lian Li PC-A05NB
Asus P5Q-E (P45 / ICH10R) | Corsair HX650 | Asus U3S6 | Asus VS278Q-P + Dell 2005FPW
+ Samsung PN50B650 | External Seagate GoFlex 1.5TB USB 3.0 + External LiteOn IHES208 BR
________________
Linus on Nvidia
|
|
|
01-27-2013, 11:43 AM
|
#75
|
|
Lifer
Join Date: Sep 2001
Location: ATX
Posts: 11,945
|
Quote:
Originally Posted by Obsoleet
I'll take your word for it. I don't have one, and not to extend a thread that has gone beyond its purpose, but was looking to pick one up to control a light, problem was finding a way to interface with the light to turn it on and off. It had no hardware interface and finding a power adapter that could be controlled was tough (for cheap).
|
That's because you're looking for the wrong thing. What you wanted was a solid state relay, which can be triggered from all sorts of low voltage ranges(USB, Serial port, GPIO pins, etc). You would then be able to do stuff like
'echo 1 > /dev/light1' or 'echo 0 > /dev/light1' to turn lights on and off.
__________________
Consequences will never be the same!
/^1?$|^(11+?)\1+$/
|
|
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -5. The time now is 09:50 AM.
|