One Each - Best Programming and Scripting Language

Discussion in 'Programming' started by lxskllr, Dec 16, 2012.

  1. cytg111

    cytg111 Platinum Member

    Joined:
    Mar 17, 2008
    Messages:
    2,236
    Likes Received:
    14
    - Yes, been there too, I can remember the specifics but it was frameworking with generics at the very corner of it's existence, and while the sun jdk spew it out, IBM's worked like a charm. Hey, bugs happen, even to JDK maintainers :). But even so, there is at lease ONE bug, *everywhere*. I find the JDK suite very dependable. (I dont know if this generic issue persists in java7/8 or was even fixed in an update to 6, it was some 4-5 years ago.)


    - Yes, definitions, for the purpose at hand, like building "houses" and "cars", Java and/or C# has no rivals I am aware of, and that makes them winners in my book. Depending on our definitions our milages will vary.


    - Yes, isnt it beautiful .. Java != JVM, i like that alot. Possibilites.
    By hippie crap I ment .. arh sorry about that, I dont wanna offend anyone who's curious and exited about the next best thing since the next best thing in interpreted languages.. just cause im not excited doesnt mean others shouldnt be. (I too am keeping an open eye on scala.)
     
  2. bobross419

    bobross419 Golden Member

    Joined:
    Oct 25, 2007
    Messages:
    1,981
    Likes Received:
    0
    As a *nix guy, I like perl. Its installed by default on just about everything and its pretty easy to write scripts. Bash is great for quick things, but its pretty easy to whip up a perl script once your Bash starts getting a little more complex. I know that some consider perl unpolished, but for scripting who really cares. Its super easy to whip something up on the quick. I would also lean a bit more towards c or c++ myself... I'm no developer, but I know enough of these languages to make sense of stuff when diving source code. Take these recommendations with the understanding that I'm coming from the standpoint of whats useful to me as a sysadmin and not as a developer.

    As mentioned before though, there is a lot of tools using python these days. I'm planning to pick it up myself just have so much other stuff I've been spending time on lately.

    Regardless of what you choose, finding projects that are both interesting to you and within your abilities can be a huge boost in learning to code.


    Also, LinuxLinks just had a post of 20 free python books:
    http://www.linuxlinks.com/article/20121228122317781/20oftheBestFreePythonBooks-Part1.html

    Can't give any recommendations, but could be worth a gander and maybe someone can +1 one of them for you.
     
    #27 bobross419, Dec 30, 2012
    Last edited: Dec 30, 2012
  3. Obsoleet

    Obsoleet Platinum Member

    Joined:
    Oct 2, 2007
    Messages:
    2,184
    Likes Received:
    0
    Programming: Python
    Scripting: Python

    And you use Linux? So you're aware it's very heavily used for many Linux GUI apps?
    Python isn't some sort of mockery of a programming language, it's the real deal.

    I use Python for everything I do (it does it all like few other languages/platforms do), and have dabbled in C and Java.
    Unless I had a career path I was interested in that involved C++ (games, more hardcore apps like Photoshop... not my cup of tea to tackle), Java (everything, TONS of jobs), or C# (everything, tons of jobs)..
    if you don't have a specific company in mind, or goal in mind, stick with Python. It's both the best learning tool and desirable resume material whether you're a programmer, systems guy, or artist (GIMP, Blender ect).

    If you insist on messing with pointers and managing memory for no reason other than learning how much of a pain in the ass it is, I'd suggest C++ and Python. C is still the standard on Linux though. And Python/C work together very well. You can program a limited subset of C in Python, it's called Cython. Something Ruby doesn't offer.

    I wouldn't learn C# because it's Windows-specific (at least .Net, the cutting edge, default implementation is), but one cool thing about it over Java is that you don't have to run in managed mode, you can access the memory and screw around with pointers like in C++. Java can't do that.

    If I snapped my fingers and became a pro at any 1 language out there alongside Python, it would be C++. I have 0 reason and desire to teach myself though.

    If I were you I'd stick with Python to learn and use, branch out into what you next find USEFUL (it will likely only pertain to a specific career focus). Whether that's Java, C++, or C# it doesn't matter.
    Python covers all the use cases as well as anything, until you need something else.

    In 2013, with the ascent of the mobile and web era- I like the idea of one very high level language (Python) and one lower level (C++). Those are my choices. I prefer to skip the stuff in the middle (Java, C#) if you don't know them already or have a job interest involving them.
    Oh, and one of the biggest geek news hits of 2012, RaspberryPi, uses Python as it's native language.
     
    #28 Obsoleet, Jan 2, 2013
    Last edited: Jan 2, 2013
  4. Colt45

    Colt45 Lifer

    Joined:
    Apr 18, 2001
    Messages:
    19,723
    Likes Received:
    0
    C is essential for a lot of linux hacking, so i'd start there.
     
  5. Cogman

    Cogman Lifer

    Joined:
    Sep 19, 2000
    Messages:
    10,086
    Likes Received:
    14
    Currently, Mono is at the same place as Microsoft's CLR. Sure in the future the .Net framework will likely implement things first, however, mono has really done a good job at keeping up.

    Don't get me wrong, mono is slower than the CLR. However, that generally doesn't matter all that much. (It isn't THAT much slower).
     
  6. postmortemIA

    postmortemIA Diamond Member

    Joined:
    Jul 11, 2006
    Messages:
    7,513
    Likes Received:
    2
    C++. Does everything that C and Java can do, and that's pretty much everything.
     
  7. Broheim

    Broheim Diamond Member

    Joined:
    Feb 17, 2011
    Messages:
    4,582
    Likes Received:
    1
    going from procedural to OO is imo harder than going from OO to procedural.
     
  8. Ken g6

    Ken g6 Programming Moderator, Elite Member
    Moderator

    Joined:
    Dec 11, 1999
    Messages:
    11,899
    Likes Received:
    73
    Not entirely correct. For one thing, C++ doesn't support reflection. You can't run C++ on an Android phone, that I know of, either.
     
  9. postmortemIA

    postmortemIA Diamond Member

    Joined:
    Jul 11, 2006
    Messages:
    7,513
    Likes Received:
    2
    That would be Android limitation. And Android uses subset of things defined in a regular JDK. So you can't simply wirte a Java program and port it to Android. However, it does support C and C++ via NDK:
    http://developer.android.com/tools/sdk/ndk/index.html
     
  10. Markbnj

    Markbnj Elite Member <br>Moderator Emeritus
    Moderator

    Joined:
    Sep 16, 2005
    Messages:
    15,687
    Likes Received:
    8
    If a young person asked me today to recommend a language to learn, unless they had expressed an intent to get into one of a few specialized areas there's no way I would recommend C++. It was a great language in its time, but from my perspective the evolutionary trends in the industry are clear: higher level managed languages like Java, C#, Python, and Ruby are the future, with scripting languages for glue and the various display frameworks sitting on top. If you really want to learn a low level unmanaged language then at least there's some good reasons to learn Objective-C (which is just C, anyway).

    Unless you're doing game development, systems development, hardcore engineering or scientific programming, embedded systems, etc., C++ doesn't have that many applications anymore. I absolutely adored the language when it was my daily tool twenty years ago, but I don't go back to it anymore unless I really have to. A recent example was some XMPP stuff, but those examples are getting rarer as time passes.
     
  11. Obsoleet

    Obsoleet Platinum Member

    Joined:
    Oct 2, 2007
    Messages:
    2,184
    Likes Received:
    0
    I'd contend things are going BACK to native code from 20+ years ago (C/C++). With the highest level scripting languages accompanying it as both glue and used where they can be.

    The rise of mobile means that if a 16KB chip can be used instead of a 32KB, and your skills can make that happen in a low level language, you're going to make a big impact on the $bottom line$. It's true that hardware is overpowered in PCs, but not every device is, and profits will always come into play. While embedded is not the job for everyone, it's one of the reasons for the return of C(++) in recent years.
    Not that native code is limited to embedded programming.
    There's Google's NativeClient for Chrome, Golang (compiles to native code, no VM), MS jumped on C++11 pretty quickly. Checkout MS's 'GoingNative' series http://channel9.msdn.com/Shows/C9-GoingNative.
    Or this post 15 hours ago. http://channel9.msdn.com/posts/C-and-Beyond-2012-Panel-Convincing-your-Colleagues
    I'm curious why MS is promoting anything called "C++ and beyond, convincing your colleagues"?? Didn't we just GET DONE convincing our colleagues to jump on the .Net bandwagon?

    And it's true Java/C# will continue to dominate the boring, sludge that is the corporate market (due to inertia), I prefer to go as high level as possible, to maximize programmer time. Higher up the food chain is Ruby and Python (personally, my money is on Python). Not to mention, I'm not too keen on corporate sponsored tech from Oracle (build a successful business on Java and get sued like Google did) and MS (really, no one needs examples here).



    Typically, you ever have a asinine amount of processing power and memory, or you have far too little. That's the way it seems to be going. You either have a server or local machine with 4+ cores and 8GB+ of ram (on the lowend), or you're developing for an iPad.

    That's why I recommend an interpreted language + low level.
    Versus the former trend of some virtual machine that's been ported everywhere. With Python you have a widely ported interpreter, and if you know C or C++ you have native code at your disposal.

    OR, better yet IMHO, if you use Python- you have Python and Cython. Python where you can, C(ython) where you need it. Pretty much my preferred solution. And we'll never get rid of native code nor very high level code until something is widely adopted that is similar to Golang (best of both worlds). I don't like things like the JVM, people are hot on Scala, Clojure and other JVM based languages. I'm hot on native code, and would hop on the Golang bandwagon before Scala anyday.

    Regarding Objective C, it does have a garbage collector, for OSX, but not for iOS (back to our, far too little resources on mobile meme I mentioned before).
    For vendor-locked code, ObjC is the winner over all other OS-specific code (pretty much the only other competitor for that grand title is C# on .Net). While I would also endorse ObjectiveC, I'm not sure it's not more the flavor of the decade (which is fine, if you like making money like most of us). C++ is universal, never went away, and like C might not ever go away as a 1st class citizen (aren't Windows7 drivers still written in C?). Java and C# will continue to lose relevance outside of the corporate world, if they haven't already.
     
    #36 Obsoleet, Jan 3, 2013
    Last edited: Jan 3, 2013
  12. Obsoleet

    Obsoleet Platinum Member

    Joined:
    Oct 2, 2007
    Messages:
    2,184
    Likes Received:
    0
    That's good news, and glad to hear it. .Net isn't that fast either. I like Mono (no sarc) and I keep MonoDev installed for occasional use (usually just recompiling small changes to open source C# programs that I mess with).
    It's the closet to .Net that I ever get. :) While I'm a believer that the best way on C# is to use MS's stuff.. If I were a seasoned C# developer (with no MSDN account for free VS updates), I'd just migrate to Mono and be done with it. I refuse to pay $500 to develop on VS or use their cutdown Express versions. There's PLENTY of tech out there just as or more exciting to use for free, MS can stuff it.
     
    #37 Obsoleet, Jan 3, 2013
    Last edited: Jan 3, 2013
  13. Markbnj

    Markbnj Elite Member <br>Moderator Emeritus
    Moderator

    Joined:
    Sep 16, 2005
    Messages:
    15,687
    Likes Received:
    8
    My new S3 has a quad core and 16GB of ram :). I tend to think current mobile limitations are just temporary. We can expect the devices to follow the same curve. And as for "promoting C++ and beyond" I didn't watch that whole video, but I think they are primarily talking about language features. Managed C++ has been the red-headed stepchild of .NET for a long time now.
     
  14. Charles Kozierok

    Charles Kozierok Elite Member

    Joined:
    May 14, 2012
    Messages:
    6,762
    Likes Received:
    0
  15. Obsoleet

    Obsoleet Platinum Member

    Joined:
    Oct 2, 2007
    Messages:
    2,184
    Likes Received:
    0
    I'm talking about the guy who writes the software for the Nook, or one of the many microcontrollers in such a device, or the firmware for the S3 I suppose. Not the guy who writes a sloppy app placed on Google Play that consumes way too much of your 16MB of RAM.

    Samsung doesn't care about that, that's someone else's problem.
    What they care about is during the design process, using a 2MB ROM vs 512KB ROM. We all know a company isn't going to be generous on non-user facing memory that isn't a selling point.. just because some guy/team can't program efficiently or in native code.

    I know if I were making a couple million devices, I'd be interested in making sure the entire design and BOM were as small as possible so my profits were maximized.

    Maybe that's not what they're doing :)
     
  16. Markbnj

    Markbnj Elite Member <br>Moderator Emeritus
    Moderator

    Joined:
    Sep 16, 2005
    Messages:
    15,687
    Likes Received:
    8
    I guess you're right. Perhaps I should freshen up my assembler skills. Nothing gets your logic into fewer bytes than good, hand-optimized assembler.
     
  17. Obsoleet

    Obsoleet Platinum Member

    Joined:
    Oct 2, 2007
    Messages:
    2,184
    Likes Received:
    0
    Ok that made me laugh but still, mobile devices ARE more and more popular while the desktop/laptop PC is waning in popularity (amazingly enough, as I prefer choice).
    I'm not sure it has to be assembler, pretty much every OS and driver is written in C.

    I still find Python does everything I need and more, so I stand by the Python + Python suggestion. I don't really have a need or desire to put in effort to learn anything lower level. Good idea for a learning experience. If I did, I'd probably go with Mark's suggestion and learn ObjectiveC. I think I'd find the most use out of that, and most of us, but doesn't work for the OP.
     
    #42 Obsoleet, Jan 3, 2013
    Last edited: Jan 4, 2013
  18. Obsoleet

    Obsoleet Platinum Member

    Joined:
    Oct 2, 2007
    Messages:
    2,184
    Likes Received:
    0
    Interesting perspective on C++ by Linus http://harmful.cat-v.org/software/c++/linus just doing some reading today and came across that. Linus is out of my league, but sounds like he'd probably recommend regular old C and <insert garbage collected language here>.

    Another quote from Linus on C++, he's basically saying to not screw with it and just go to something with memory management and tighter integration with your OS. Use either very low level (C) or high level (Python, C#, Java).
    http://thread.gmane.org/gmane.comp.version-control.git/57643/focus=57960

    'And if you want a fancier language, C++ is absolutely the worst one to
    choose. If you want real high-level, pick one that has true high-level
    features like garbage collection or a good system integration, rather than
    something that lacks both the sparseness and straightforwardness of C,
    *and* doesn't even have the high-level bindings to important concepts. '
     
  19. Markbnj

    Markbnj Elite Member <br>Moderator Emeritus
    Moderator

    Joined:
    Sep 16, 2005
    Messages:
    15,687
    Likes Received:
    8
    He's nothing if not opinionated. I don't really agree. I always thought of C++ as a better C. It adds a lot of support for modularization, decoupling, and reuse without adding much overhead or restricting C's low-level close-to-the-machine semantics.
     
  20. Cerb

    Cerb Elite Member

    Joined:
    Aug 26, 2000
    Messages:
    17,409
    Likes Received:
    0
    Meanwhile, 50 years from now, people will still be having the same arguments, just with better dynamic languages. There's a fundamental trade-off between control over machine resources, and ease of coding solutions to difficult problems. Both sides will get closer to the middle, but without some major mathematical breakthroughs, there won't be one language to rule them all.
     
  21. mv2devnull

    mv2devnull Senior member

    Joined:
    Apr 13, 2010
    Messages:
    954
    Likes Received:
    1
    Furthermore, if you did form your opinion about a language 20 years ago, you might not have been looking at the same beast that is around today. Languages and compilers can change. C++ in particular has now complex ways to fail that were not even imagined back then.

    Linus has a point though; the "total control" requires that You Know What You are Doing, while the "ease of use" should do all the hand-holding for you automatically and correctly. C++ is somewhere in the middle.
     
  22. Obsoleet

    Obsoleet Platinum Member

    Joined:
    Oct 2, 2007
    Messages:
    2,184
    Likes Received:
    0
    There's no 1 language to rule them all, but from what I've seen Golang comes the closest, if it were more popular and more libraries (though the stdlib alone is robust).

    The OP might want to look into Golang for his 'programming' language. While I don't think anything will ever replace C completely in drivers or embedded applications, Golang solves a lot of modern problems with C++ and many other compiled languages. Not only for the compilation time, but concurrency/multithreading/async stuff that I don't know much about 1st hand.
    But it does appear to solve those issues without complexity (Scala).

    Python and Golang might be a pretty strong pair. While avoiding going back to the days of yore with C/C++/ObjC. If Go were more popular than it is, I'd say it's one, if not the only language that I could wholesale replace Python with.
    But having other users, search results, and lots of FOSS code available is worth a lot to me.

    I'm taking the wait and see approach with Go, Scala, Erlang, Clojure, Haskell.. whatever else is out there that's 'advanced', and taking a safe bet with my time and effort with Python.

    If I were to go beyond Python, it'd probably be C, Go or maybe C# (if Win8 wasn't the apparent new standard for the Windows desktop, which might be the reason for my first Macbook purchase ever).
     
    #47 Obsoleet, Jan 7, 2013
    Last edited: Jan 7, 2013
  23. Staples

    Staples Diamond Member

    Joined:
    Oct 28, 2001
    Messages:
    4,443
    Likes Received:
    3
    I have taken a look at many of them recently and my top two would be Python and C#.
     
  24. Staples

    Staples Diamond Member

    Joined:
    Oct 28, 2001
    Messages:
    4,443
    Likes Received:
    3
    I actually did their Python tutorials but I have to admit, I like my O'Reilly book better, that website has you go do a lot of independent research with only saying do a search for x y and z and not really giving you links to what it would like you to read.
     
  25. Obsoleet

    Obsoleet Platinum Member

    Joined:
    Oct 2, 2007
    Messages:
    2,184
    Likes Received:
    0
    I also did the Python tutorials from that site, and he does ask you go learn some on your own, but you'll end up doing this anyway. It's the best way to learn 'the hard way'.
    He doesn't confuse people with IDE features, detailed explanations on how things work or why they are this way, he doesn't insist you understand pointers or that 'a real programmer needs to know this history or CS theory' kind of soapbox rhetorical nonsense. And if anyone is qualified to talk down other programmers, it's the author.

    The way I approached it, is that I did the lessons, and the lookup parts I either did briefly, or did later on as I started on a project. He gets you off the ground with appropriate hand holding, but I did my own projects that I had in mind for Python, rather than use web.py for the game. I went from someone who failed in teaching himself Java, to someone making real applications in Python and it's a lot more FUN than Java, and cheaper than C# while being just as versatile as either (possibly moreso if scripting is important to you). I'm pretty thankful for the role of that book, IMO his selflessness has solidified Zed Shaw as a legend, maybe not quite on the world changing godlike level of RMS or Linus, but he's definitely reached demigod status.

    The key/brilliance to LPTHW is that he gets you to do STEP 1, typing and running working code with ease.
     
Loading...