Slashdot Mirror


Ask Slashdot: It's 2014 -- Which New Technologies Should I Learn?

An anonymous reader writes "I've been a software engineer for about 15 years, most of which I spent working on embedded systems (small custom systems running Linux), developing in C. However, web and mobile technologies seem to be taking over the world, and while I acknowledge that C isn't going away anytime soon, many job offers (at least those that seem interesting and in small companies) are asking for knowledge on these new technologies (web/mobile). Plus, I'm interested in them anyway. Unfortunately, there are so many of those new technologies that it's difficult to figure out what would be the best use of my time. Which ones would you recommend? What would be the smallest set of 'new technologies' one should know to be employable in web/mobile these days?"

80 of 387 comments (clear)

  1. Learn the basics by Anonymous Coward · · Score: 5, Informative

    Get intimate with the http protocol first and foremost! I can't tell you how many times I've worked with "web developers" who have no clue what the different HTTP verbs do, or why they're there in the first place.

    Secondly, if you want to code backend I''d stick to backend. Find a serverside technology that suits you(ASP.Net, Java or PHP) and start learning. Don't waste to much time learning frontend web technologies, as that's a completely different workflow to what I think you want to do. Most serious web development companies have dedicated frontend developers for a reason :).

    Good luck!

    1. Re:Learn the basics by Opportunist · · Score: 2

      Why they are there? They don't even know THAT they are there!

      If your web dev looks at you blankly and asks "Verb? What verb?", you know that you have a long way to go.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    2. Re:Learn the basics by Ash+Vince · · Score: 4, Informative

      Why they are there? They don't even know THAT they are there!

      If your web dev looks at you blankly and asks "Verb? What verb?", you know that you have a long way to go.

      As I a web developer of the past decade or so, I can honestly tell you I have had to dive into the meaning of HTTP verbs exactly once in all that time to do stuff with HTTP PUT.

      The reality is that you can actually be a dam successful web developer without having a clue what an HTTP Verb is even though you use them every time you create form that posts its variables instead of putting them on the querystring. Does it make you a better web developer knowing a bit more about HTTP Verbs? Absolutely, it does but you can use them on a daily basis without knowing how putting Method="POST" on a form is translated into the underlying HTTP protocol since most web technologies abstract this stuff away from you.

      The time when understanding a bit more about HTTP protocols really comes into play is when you need to start creating or utilizing API's.

      --
      I dont read /. to RTFA, I read /. to offend people in ignorance.
    3. Re:Learn the basics by Hal_Porter · · Score: 2

      You can bullshit HTTP. Just learn GET and POST and learn a speech about what 'idempotent' means. Once you explain that most people's eyes glaze over, so you can skip the rest.

      --
      echo -e 'global _start\n _start:\n mov eax, 2\n int 80h\n jmp _start' > a.asm; nasm a.asm -f elf; ld a.o -o a;
    4. Re:Learn the basics by digitalchinky · · Score: 3, Insightful

      Correct. But, you could flip that around and ask yourself how many times during the last decade or so have you done things the harder way, or reinvented the wheel, because you didn't understand HTTP headers well enough to leverage existing functionality?

      I write medical imaging software, most MR / CT studies have anywhere from one to a few thousand images, every server call you can avoid makes for a happy radiologist. This might mean wedging various DICOM fields in the headers when thumbnails are downloaded so you can rapidly populate the UI, build up annotation layers, sort thumbnail stacks, all kinds of cool stuff.

    5. Re:Learn the basics by Urkki · · Score: 2

      These days, Javascript is the hot backend technology, which is convenient when it's also the leading (and only future-proof) front end technology of its type (programming language).

      Seriously, if you have not already, give node.js a spin if you do any Internet-related development work. And I don't mean anybody should necessarily start using it, just that it is something to know today.

    6. Re:Learn the basics by Opportunist · · Score: 4, Insightful

      As a C programmer, I had to descend into the depths of ASM about twice in the decade I have been developing. But KNOWING about it sure helped me avoid stack overflow security errors, mostly because I knew just why they pose a security threat.

      The point is not that you have to USE it. The point is to know about the basics to understand WHY you do some of the things you do the way you do them. Rote programming is one of the problems of our times, where programmers do stuff a certain way because they were taught to do it that way without understanding the basic idea behind the reason to do it that way.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    7. Re:Learn the basics by Zenin · · Score: 2

      Seriously, if you have not already, give node.js a spin if you do any Internet-related development work. And I don't mean anybody should necessarily start using it, just that it is something to know today.

      Here's all you need to know to day about node.js: Node.js Is Bad Ass Rock Star Tech

      --
      My /. uid is better then your /. uid
  2. Work on the basics by mozumder · · Score: 5, Informative

    Javascript/jquery front ends, php/python/ruby/sql backends.

    Objective-C for iOS.

    Those will keep you employed for the next 10 years.

    1. Re:Work on the basics by crutchy · · Score: 5, Insightful

      dunno what retard modded parent down... maybe he's just an asphole

      as much as javascript is as shit as python, it's like that annoying relative that you just can't get rid of so you may as well get used to

      client-server has been at the forefront for years and will continue to be the case, particularly as clients evolve in the mobile arena the only fixed baseline is the trusty ol' web browser

    2. Re:Work on the basics by Anonymous Coward · · Score: 4, Informative

      And Java, for Android development.

    3. Re:Work on the basics by Spy+Handler · · Score: 5, Interesting

      Objective-C for iOS

      This. Since you already have 15 years of C experience, you should pick this up quick. And it will set you apart from all the noob JS/php "developers" whose only knowledge of C is that it's the third letter of the alphabet.

    4. Re:Work on the basics by gbjbaanb · · Score: 2

      the jobs I see the majority of adverts for (by far) are all ASP.NET (yes, I know its poo, but technical quality was not a criteria in the question).

      That said I am also seeing a lot of jobs wanting embedded linux (with networking stuff to get at cloud-connected servers)(probably so companies can filch your data and sell it to advertising companies), that pay rather a lot. So frankly, learn that!

    5. Re:Work on the basics by VortexCortex · · Score: 5, Funny

      whose only knowledge of C is that it's the third letter of the alphabet.

      Actually, 'C', is the second letter of the alphabet's char array. 'A' is zeroth.

    6. Re:Work on the basics by Daniel+Hoffmann · · Score: 5, Funny

      Actually C is the 0x47th letter in the alphabet I use.

    7. Re:Work on the basics by Opportunist · · Score: 3, Funny

      C'mon, if you're trying to go alpha-geek on us, at least say that C is the 10th letter of the alphabet.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    8. Re:Work on the basics by mysidia · · Score: 4, Funny

      Javascript/jquery front ends, php/python/ruby/sql backends.

      Don't forget to learn SQL and libbdb/BerkeleyDB for databases; Qt for user interfaces; Davlik for Android. Java.... Java EE... Java JUnit.... C#. C++... Objective-C OCUnit, Cedar. Behavior-driven test tools, JBehave. Selenium framework; Cucumber, RSpec, and Capybara for testing: Javascript jasmine; Python Lettuce or Splinter . C# MSpec, SpecFlow, WaitN.

    9. Re:Work on the basics by olau · · Score: 4, Insightful

      Python is a really nice language. For a Python backend, you could start with the Django tutorial. Go through that and a Python tutorial, and try to remember not to program Python as you would C, and you'll have a good start.

      For the front end, you'll need to spend some time with HTML, and learn a bit of Javascript/jQuery for any dynamic parts. And if you want it to look any good (and you should care about this because people on the web are generally less forgiving of not caring about the looks), you'll also need to figure out how to mimic a graphical style from a designer with CSS. For hobby stuff, you can just mimic some existing designs, if you're doing it as a business you'd probably want to pay someone to come up with the design, or buy a pre-existing one.

      It sounds like a lot of work, but Python + Django is actually lots of fun because you can get a lot done in little time (there's a video of someone doing a wiki site in 20 minutes), and the whole front-end thing is also quite fun because a browser is an interactive beast so you can quickly change things around and see things happen graphically.

    10. Re:Work on the basics by JaredOfEuropa · · Score: 4, Interesting

      For mobile development, learn about tools, platforms and methods for cross-platform development. And once you master the tools, learn about UI/UX and what makes a great interface on mobile platforms. These are skills in short supply, even in mobile development shops.

      --
      If construction was anything like programming, an incorrectly fitted lock would bring down the entire building...
    11. Re: Work on the basics by arielCo · · Score: 5, Funny

      C is for Cookie, and your browsers store them for me! (Omnom nom, nom)

      --
      This post contains no rudeness or derision of any kind. All arguments are friendly. Terms and exclusions may apply.
    12. Re:Work on the basics by dkleinsc · · Score: 5, Funny

      Actually, most developers and a lot of systems I encounter use a character encoding that they say is UTF-8, but actually kinda uses ASCII. This causes all sorts of interesting issues, which is why I've dubbed this encoding WTF-8.

      --
      I am officially gone from /. Long live http://www.soylentnews.com/
    13. Re:Work on the basics by Anonymous Coward · · Score: 2, Insightful

      Which really just means that he posts things that go against the groupthink so prevalent here. It's why I post anonymously now. It seems that anyone not interested in a self congratulatory circle jerk is expeditiously shoved in a corner on this site.

    14. Re:Work on the basics by mrbluze · · Score: 2

      Javascript/jquery front ends, php/python/ruby/sql backends.

      Don't forget to learn SQL and libbdb/BerkeleyDB for databases; Qt for user interfaces; Davlik for Android. Java.... Java EE... Java JUnit.... C#. C++... Objective-C OCUnit, Cedar. Behavior-driven test tools, JBehave. Selenium framework; Cucumber, RSpec, and Capybara for testing: Javascript jasmine; Python Lettuce or Splinter . C# MSpec, SpecFlow, WaitN.

      Sounds easy.

      --
      Do it yourself, because no one else will do it yourself. [beta blockade 10-17 Feb]
    15. Re:Work on the basics by Anonymous Coward · · Score: 3, Informative

      Actually, this line of thought was translated into an XKCD strip.

      https://xkcd.com/1318/

    16. Re:Work on the basics by njnnja · · Score: 2

      This. I write a lot of modeling algorithms in c++ but to make it useful to the team where I work I wanted to develop a front-end/gui. I learned python/django and now I can get a basic front-end working in about a day. Add javascript/jquery/a commercially available javascript UI library or two for "spreadsheet-like" tables and twisties and such and you can have a very complex system with a nice UI that you understand from front to back.

    17. Re:Work on the basics by Giblet535 · · Score: 3, Funny

      iOS is a shrinking market (not growing as fast). Don't fanboy out on us. Android owns the vast majority of that market and is growing rapidly (very rapidly in China and other emerging markets). Obj C is a good skill, but not as valuable as jscript/jquery. C++ pays better, but the jobs are few and the projects boring. Python has more real-hire jobs. Java still leads in real-hire for some weird reason. If employment security is your focus, learn Linux, Java and javascript/jquery (Android path). Learning LAMP/WAMP is never a bad idea. If wealth is your focus, learn politics or specialize in diseases of the wealthy. If women are your focus, you are in the wrong forum, but report back if you're successful.

    18. Re:Work on the basics by squiggleslash · · Score: 4, Informative

      I'm not sure this is a fair answer to the question: it's a little like someone saying "It's 2014: What new stuff should I learn to be a better accountant?" and the answer coming back "Have you tried calculus? IT'S AWESOME!!"

      The right answer, alas, is not something that tickles your fancy, but something you're likely to hate - like the latest tax code.

      What about the original question? Well, they're saying "New technologies" but it's not clear if they mean "New to me" or "New as in 3D printed guns". I'm guessing the latter, this is Slashdot after all.

      The answer to the latter interpretation is, of course, "Who the f--- knows?" It's pretty close to impossible to determine what's a fad technology and what's not. I think node.js shows some potential, but it's the only thing I can think off the top of my head it's worth familiarizing yourself with - and technically, it's not new new, it's just up and coming.

      The answer to the former is... well, something that's going to depress virtually everyone on Slashdot.

      Python? Fuck no. Nobody uses it. Let me clarify that for pedants: yes, you can mention a handful of projects that use it, and many, many, many, GNU/Linux wizards use it to write quick automation scripts for various tasks, but that's not a reason to learn it.

      What do you need to learn that's a back-end language? Well, there are three:

      PHP.
      VB.NET.
      Java.

      At least two, possibly three, of those will send most self respecting programmers gibbering in a corner. However:

      - PHP is the language of LAMP. Yes, P originally meant "Perl", but PHP took over a long time ago. Download a few popular open source projects of scale and popularity equal to or greater than Wordpress (itself a common example), and you'll see what I mean - large numbers, possibly most, of the projects you download will be written in this bullshit, awful, language.

      - VB.NET is one of the two major enterprise core platforms. It really is. Why? Well, back in the 1990s, lots of corporations brought in armies of code monkeys to write their core business applications in the easiest languages available, which meant they were left with a large body of business logic written in VB. As businesses moved to the web, they found the easiest migration path was VB.NET, it meant they could use much of their existing code and simply drop it into a web environment. As a result, most .NET applications are written in VB.NET, and large numbers of enterprises are dependent upon it.

      - Java - the other end of the Enterprise coin. Any corporation who didn't migrate to VB.NET for their data/web backends migrated to Java instead, because of the big Java push in the late 1990s and because Sun put together some moderately good (for the time) web frameworks in the early 2000s.

      And that's it.

      You can start to cry now.

      Python? Nice, but up there with shell scripting as something that's good to have, but you won't actually ever have a boss ask you "We have major problem and we're going to need someone with Python skills to fix it."

      Front end development: HTML5 and jQuery. Worth knowing a little Flash too, because you may have to maintain something in Flash or even write something new in Flash if your employer doesn't want people downloading their multimedia files. That's about it.

      This is the truthful answer. It's up to you to decide now: does this make you want to give up being a programmer? Because if it does, you can always become an accountant! Here's a copy of the 2014 Tax code to get you started...

      --
      You are not alone. This is not normal. None of this is normal.
    19. Re:Work on the basics by gbjbaanb · · Score: 2

      you've never heard of 3-tier architectures?

      3 tiers: webserver is the presentation layer; middle tier is a set of web services (or other services, but I guess people would prefer webservices nowadays), data tier is the DB, preferably exposing its stuff as an API via stored procedures.

      This is how the financial services companies (the ones that do things properly that is) do things. Typically they run their tiers on distinct servers that have security firewalls between them as well, and as limited an attack surface as possible (eg no network access at all from the web to the DB)

    20. Re:Work on the basics by gbjbaanb · · Score: 2

      It depends how much security you need. If I was running a blog that had posts about my cat... just slap it all on a single shared webserver.

      If I was running a server that contained people's credit card data, I'd run it as 3 servers: web, business logic and a third for DB. Generally, if you get to the point where you need this kind of stuff, you might require multiple web servers to handle load or fault tolerance anyway.

      If cost really is a problem, I'd run the 3 tiers in 3 VMs on a single box - assuming there are few attacks someone connecting from the internet can make to hijack the hypervisor, this should be sufficient for a lot of scenarios.

  3. It's 2014 by StripedCow · · Score: 5, Funny

    Answer:
    Corporate Finance, Intellectual Property Law, Data Mining

    --
    If Pandora's box is destined to be opened, *I* want to be the one to open it.
    1. Re:It's 2014 by coastwalker · · Score: 5, Informative

      Spot on. All those posts advising on what tools to learn are missing the point. The world isn't hiring people with toolboxes, its hiring people who know how to use the toolbox to make stuff. Concentrate on finding the right Stuff to become expert on and you will enjoy your toil and make money doing it.

      Sitting in a basement learning how to use a bunch of tools will just see you end up on a production line making dog food. Which is OK if you like the all pervasive smell of dog food I guess, but probably wasn't in your plan for life when you thought that being an Astronaut might be fun.

      --
      Facts are history now plebs have politics for religion on social media.
  4. JS and HTML5 by Anonymous Coward · · Score: 3, Insightful

    By what you said, I guess I would recommend you to start with HTML 5 and Javascript. Both are growing, well stabishled, not very hard to learn and very usefull (for desktop, mobile and even server-side using node.js).
    Learning something about OOP is good too. I love Ruby, so that's my first choice. But java and others are ok too.

    Good luck.

  5. Universal... by Anonymous Coward · · Score: 3, Interesting

    Learn to lie and bullshit with a straight face.
    These skills can take you everywhere. Even right to the top if you're good enough at them.

    Being willing to use people and steal are also good.

    1. Re:Universal... by Opportunist · · Score: 4, Insightful

      If you can lie and bullshit people into thinking you know what you're doing while at the same time you can keep talking and talking 'til they believe you based on how they don't have the foggiest idea what you're talking about but can't afford to look like they don't because they think their job depends on understanding you 'cause, well, you're expensive... ...congrats, you're a consultant.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
  6. Javascript! by Anonymous Coward · · Score: 4, Insightful

    Learn Javascript. It's everywhere:
    * client-side in browsers as little helper fragments attached to buttons, etc
    * used for building rich client applications within browsers
    * can be used server-side with things like Node.js
    * is embedded as a scripting language into various tools

    And it's actually not a bad language. The underlying concepts are simple and elegant, although some features for large-scale programming are lacking (no module system, etc).

    It's also fun to learn, because you can achieve interesting/amusing results within a browser with just a few lines of javascript.

    With some solid javascript knowledge for both client and server-side style code, a lot of job opportunities will open. Learning something like Python is an alternative, but even then employers who look for Python programmers for web-based apps will usually also want javascript skills...

  7. Stick to what you know by rodrigoandrade · · Score: 5, Insightful

    You got 15 years experiene writing C code, good luck finding a "whiz kid" who can do it better than someone who's been doing it for that long.

    You said it yourself, C isn't going away anytime soon. Stick to it as your bread and butter.

    If you want to learn to program for Android/iOS, that's great, but do it as a hobby. Employers nowadays want 10 years experience on a tech that's only been available for 5 years (yes, it's that crazy), so by the time you get up to speed, the market will have already moved on to the next shiny thing.

    You started with "It's 2014..." What will you do in 2025? Like I said, when it comes to your bread and butter, stick to what you know best.

    1. Re:Stick to what you know by cyborg_zx · · Score: 3, Insightful

      Pretty much - let the hipsters chase the shiny tech. When the littered remains of abandonded technologies is cleared away the old stalwarts will still be there because there hasn't been any *real* innovation in languages for a long time. The basics were invented early on.

    2. Re:Stick to what you know by ebno-10db · · Score: 4, Insightful

      Employers nowadays want 10 years experience on a tech that's only been available for 5 years (yes, it's that crazy)

      a/k/a H-1B job listings - meant only to prove that there are no Americans to fill the job. The real disadvantage Americans have is that we have no time portals which allow you to get 10 years of experience with a 5 year old technology. Some other countries are obviously filled with these time portals, as companies are able to find people meeting the job qualifications in those countries.

      FWD.US is obviously on the wrong tack with their "think of the children approach", when what we need is a program to make time portals widely available.

    3. Re:Stick to what you know by Opportunist · · Score: 4, Interesting

      Someone has a mod and, unlike me, hasn't posted yet? That's about the best answer there is.

      If you have experience of 10+ years in a field that isn't, say, Visual Basic or something similar that nobody would willingly touch anymore with a 10 foot pole, cling to it. You're gold, you have 10+ years of C. It doesn't get any better than that.

      Instead of trying to reach into some other language or technology, I'd broaden my horizon and delve into other fields that you can combine with your deep C knowledge. Security is currently a big deal, and embedded C almost screams that you should take a shot at physical security and surveillance. I'd take a look into that field (if you're at all remotely interested).

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    4. Re:Stick to what you know by gr7 · · Score: 5, Interesting

      On the plus side, Embedded programmers get about twice as much as web programmers. Switch to contracting if you want more money - around $50 per hour for web developers $30 to $75 and around $100 per hour for embedded programmers ($75 to $200). I'm not an expert on rates. This is just people I've met. It's a small sample but it makes sense. Embedded C programmers with more than 3 years of experience are damn hard to find. It's a niche market.

      On the minus side, there are fewer Embedded programming jobs out there so you have to travel farther and often you can't work from home because you need to be with the hardware and often there aren't enough hardware to let you take one home. Or you need expensive debugging equipment like oscilloscopes, etc. Again I'm talking about contracting where you will have to travel to different places every time you get a new contract and they will be farther away than those web development contracts.

      I recommend you stick with embedded C and if you want to learn something, learn how to use an oscilloscope, read a schematic and study some basic electronics so that when something doesn't work you can tell the Electrical Engineer exactly what is wrong instead of just saying "it's broken". This is how you get in the upper end of the salary range.

      If you do switch to web programming then obviously you need to know: html, javascript, SQL. Those are the most basic and key things you need to understand.

    5. Re:Stick to what you know by Necron69 · · Score: 2

      I'd stick to embedded systems. There is more and more of it all the time, and a lot of it runs Linux/C. I graduated in '93, and moved to embedded systems (switches) six years ago. I really only program in C and Perl, but I make well over six figures, work only 40 hours a week, and live nowhere near Silicon Valley.

      Let the kids chase the hot new stuff.

      - Necron69

    6. Re:Stick to what you know by Tablizer · · Score: 2

      The real disadvantage Americans have is that we have no time portals which allow you to get 10 years of experience with a 5 year old technology. Some other countries are obviously filled with these time portals...

      No, they work them 80 hours a week instead of 40 so they have 10 years of experience in 5. It's like Dog Years (life is ruff).

  8. Stick with what you are doing by PsyMan · · Score: 2, Funny

    But learn whatever it takes to webify those embedded systems with utterly pointless interfaces to appeal to the new generation of people who wont even buy a loaf of bread unless it can be monitored by their mobile device. Now, off to the shop to buy toilet paper as my iWipe assroll monitor says that the bathroom is reporting only 3 slices left. Get off my........

  9. -- Which New Technologies Should I Learn? by Anonymous Coward · · Score: 2, Interesting

    If you want to have more job opportunities learn C#. You will then have a solid base for both mobile development and web technologies. You can also use your C# skill to develop for android using Xamarin Studio (standalone, or there is a handy plugin for Visual Studio) or you can learn Java faster because they have similar syntax and functions (there are exceptions, of course).

  10. Web Development by Anonymous Coward · · Score: 5, Funny

    So we wont have to put up with this horrible slashdot beta crap.

  11. Learn the backbone by taikedz · · Score: 5, Informative

    In web programming specifically? I'd say, make sure you know the fundamentals first and foremost.

    As a previous poster said, knowing the HTTP protocol well (RFC2616 - be familiar with RFCs in general) will be important (more than you'd think - a misused verb led to Google's standard webcrawlers hosing a site because said site didn't implement forms/links properly), I'd recommend also getting intimate with some of the other building blocks such as SMTP, POP, FTP, SSL, ... you get the picture. They'll come in handy when trying to piece together/troubleshoot a larger solution.

    On top of that, know the roles and differences between different server apps (app servers like JBoss/WebSphere; web servers like Apache, nginx), know at least 2 popular database engines (I personally favour MariaDB and SQLite but that's up to you; you might want to look at PostgreSQL or CouchDB for something radically different), after learning HTML and XML/DOM fundamentals, know about cookies and AJAX specifically (which are part of your HTTP knowledge, but revisit later) and a take a web security course, or at the very least read far and wide on the matter. Someone suggested focusing only on back-end - fine if that's what you want to do, but at least be aware of how things behave in theory on the front end. Again, fundamentals.

    After (all) that (a fortnight's worth of reading, not counting any experimentation?), the choice of languages to work with these building blocks is entirely up to you. Most commonly mentioned are PHP and Ruby in different setups (honourable mention to JSP), Perl and Python for CGI and general scripting, Ruby on Rails as language+framework...

    When staring out and for longevity, choose fairly popular languages that run in open source runtimes (they're durable, they're documented, there are plenty of communities), and stay nimble with frameworks - a previous ask.slashdot showed how some of them can easily get canned despite a strong user base, and frameworks are just a flavour of the year... more likely than not, someone else (project lead, customer, policy...) is going to tell you what framework to use, so just make sure you've mastered your chosen language set.

    For iOS devel you're not going to escape Objective C. Android I understand is purely Java. But most things you're likely to want to do that are web facing, you might as well do in a web page.

    And, in general, stay nimble. But you knew that, right?

    --
    -- "Simplicity is prerequisite for reliability." --Dijkstra
  12. If you already know C ... by Viol8 · · Score: 3, Insightful

    ... learn C++, Objective C or Java, all of which should cover you for mobile development in one form or another. And if you learn C++ you'll be a bonus to any project that hires you since too many C++ devs these days don't have a clue about low level bit twiddling or memory management - its all frameworks and objects for them without a real appreciation of whats going on under the hood.

    If its web you want then HTML5/javascript.

    1. Re:If you already know C ... by ebno-10db · · Score: 3, Interesting

      if you learn C++ you'll be a bonus to any project that hires you since too many C++ devs these days don't have a clue about low level bit twiddling or memory management

      Unfortunately being a potential bonus to a project and getting hired are often two different things. My brother is an excellent C++ bit twiddler as well as knowing the "higher level" stuff. He was out of work for a long time despite that skill. Finally he got a job at a security company where the person hiring him saw an understanding of low level stuff as an important asset. That makes sense as obviously hacking into corporate systems involves a lot of low level twiddling. Maybe my brother's problem is that he was only interested in white hat stuff. You can't make money if you're too ethical.

      A few caveats to my pessimistic view. He was looking for work back in 2010 when the economy was even worse than now. Also his degree is in a completely non-CS related subject.

  13. mobile devices. by hooiberg · · Score: 3, Insightful

    Make sure not to mistake 'technologies' for 'programming languages'. For now, I would say programming on mobile devices. Now that many people have mobile phones with apps and all that, and tablets becoming fairly popular. Learn what has to be taken into account with mobile device architectures, and learn the languages used to program on them.

  14. addendum by taikedz · · Score: 2

    Reading subsequent comments, 2 points stand out

    If you know C, and it's not going anywhere soon, why change? Are you bored of the current projects you're on? Or do you think you'll be better off elsewhere? Greener grass etc

    Some are being a bit more meta and suggesting fields to apply computing to, like data mining, marketing, etc. Worth investigating if you float that way, but I didn't think that was the point of the question.

    You could also consider going into management as a techie, to at least have someone sane at meetings where the majority know more business than technology.

    --
    -- "Simplicity is prerequisite for reliability." --Dijkstra
  15. HTML, CSS, JavaScript and progressive enhancement by magic+maverick+ · · Score: 5, Informative

    If you are already a programmer, or even if you're not, then there are three technologies that you should attempt to learn (or at least recognize and be able to say "yeah, OK, this makes a sorta sense"). These are HTML, CSS and JavaScript. HTML is the basis for web pages. It is what they are built upon. I suggest starting with HTML 4.01 (strict) and XHTML 1.1 (there are major differences that may not look like being major), and then moving onto HTML 5 (yet to be fully finalized). The older HTML should teach you some good habits, as should the XHTML (and while you're looking at XHTML, learn what XML is, and why XHTML exists). Then you need some style to make your pages look pretty. That means CSS. CSS is broad, and you can just learn the basics and pick up the more complicated stuff as you go along. (That basically means start with CSS 2, and learn "CSS 3" modules as and when you need them.) CSS is capable of doing a lot of stuff that previously required JavaScript.

    JavaScript is not an essential. But you should know the basics. And most importantly, you should know two things, when not to use JavaScript, and what progressive enhancement is. (Progressive enhancement might also be called graceful degradation. It's basically the same thing, in the way that Open Source Source and Free Software are basically the same thing. There are philosophical differences, but they still do mostly the same thing.)
    ---
    And that's the web. Finished. You can go home now.

    Oh, still with me? Yes, there is still more to learn. Learn PHP. "But I heard it's awful" you cry. And it may well be. But it's also probably the most popular backend web language. It's what major and widespread software is written in. WordPress, MediaWiki, Drupal, and others are all written in PHP. But, like with JavaScript, unless you want a job, you don't need to learn more than the basics. There are great docs that can help you with almost anything.

    Similarly, learn SQL if you don't already. If you're learning PHP from scratch, use the PDO functions, then you can easily switch databases (and not be stuck on MySQL).
    Also, learn how to wrangle an Apache .htaccess file, and especially redirects.

    Next, I hear Ruby is getting a lot of press. Maybe learn some of that, and Ruby on Rails.
    ---

    Finally, and this is more important than Ruby on Rails, make sure you don't get hung up on pages looking the same in every browser. But do learn the fuck out of how to test in different browsers, and on different devices. And test the fuck out of your pages in different browsers. If you're page isn't readable in Lynx, maybe you need to do some reconsidering.

    --
    HELP MY ACCOUNT HAS BEEN HACKED BY AN ILLIBERAL ART STUDENT SET TO DESTROY THE INTERWEBZ!
  16. Re:HTML, CSS, JavaScript and progressive enhanceme by magic+maverick+ · · Score: 3, Informative

    Oh, and I should have mentioned (and others have already), you also should learn at least the basics of the various protocols. You should be able to recognize the various parts of a HTTP message, and know what most of the verbs (e.g. PUT, POST, GET) and codes (e.g. 200, 404, 408) mean. You should know how HTTPS works (and for bonus points, know at least two major flaws with it). And you should know what TCP/IP means (and if you're really good, how they work), what DNS and DHCP are, and so on.

    Good luck.

    --
    HELP MY ACCOUNT HAS BEEN HACKED BY AN ILLIBERAL ART STUDENT SET TO DESTROY THE INTERWEBZ!
  17. Duh by hackertourist · · Score: 5, Funny

    Antigravity, nuclear fusion, holodeck.

  18. C++11 by speps · · Score: 2, Informative

    I think given the momentum C++ has right now (for better or worse, I can't say yet) you should try to learn C++11 and all the new tricks that come with it. It's a pretty different experience from C and C++98 in my opinion. Watch this for a nice roadmap and insights : http://channel9.msdn.com/Event...

  19. Expand what you already know. by GauteL · · Score: 4, Insightful

    Unless you are simply passionate about web technologies and just really want to work with it, stop trying to chase the latest and greatest here. You will find it remarkably hard to compete for the Javascript/web/whatever jobs as the 20 year old wizz-kids will have more experience than you in web-stuff but will probably need much less money.

    Instead focus on improving what you already do, and expand into new areas of the embedded sphere. All that fancy web tech will in the end use and require embedded devices. We will get many more embedded devices, rather than fewer of them. Furthermore, try to expand your embedded domain knowledge. Perhaps there are some really exciting new embedded devices (drones, wireless home management devices, etc) you'd enjoy working on as a hobbyist? Expand into other embedded languages as necessary to work on the range of devices you like (i.e. Objective-C if you want to write iOS apps). You will only really learn properly if you have something concrete you want to do anyway.

    The point is; unless you hate what you're doing, you should work on ways to make all those 15 years of embedded experience count. Chasing some Javascript web-stuff will not achieve that.

    1. Re:Expand what you already know. by CubicleZombie · · Score: 2

      I have to disagree. If you expand too much on what you already know and become too specialized, you can end up unemployable. Chase the JavaScript stuff and then use that 15 years of experience to end up managing those 20 year old whiz kids.

      --
      :wq
  20. The "cloud" by pla · · Score: 2

    First, a disclaimer: Yes, I understand that the "cloud" means nothing more than playing Buzzword Bingo with the same old crap hosted by someone else, with a shiny new billing model that lets the service providers rub their hands while cackling with glee over all the idiot CEOs out there willing to pay more for what they don't recognize as the same ol'.

    That said, if your resume says you've worked in the trenches with VPSs and hosted solutions, you can expect the HR drone's eyes to glaze over because it doesn't match any of the buzzwords on their pre-screening checklist. If, however, you say that you've "Deployed critical corporate assets to the Azure cloud", well now, you may well have yourself a job!

    Just make sure when you actually get to interview with a real IT manager, you know the difference between the PR bullshit and reality; the pain of trying to integrate between different "clouds" you don't control; how to code in C# and Javascript and SQL. The rest just gets you in the door, you still need to do the same old job as ever.

  21. Re:2014 = Let Java die. by Anonymous Coward · · Score: 2, Funny

    Java = var lookatme = 640000000;
    C++ = unsigned long lookatme = 640000000;

    It really isn't that hard guys...

    Apparently it is, because you just wrote some JavaScript instead.

  22. never learn anything just for the sake of learning by Tom · · Score: 4, Insightful

    Check if there's a Free Software project you're interested in, or you have a project of your own that would benefit.

    Learning is one thing, practical experience is what matters. So unless you actually use those skills, they are close to worthless. And learning and using something is a lot easier if it is linked to something that matters to you.

    --
    Assorted stuff I do sometimes: Lemuria.org
  23. Web and mobile technoligies worth looking at by Anonymous Coward · · Score: 2, Informative

    I'd caution you first to take a good look at this article by Jeff Atwood (http://www.codinghorror.com/blog/2008/01/the-magpie-developer.html) discussing what he calls "Magpie Developers" - developers that flock to new shiny things just because they are new and shiny,

    Once you've taken a look over that, here's my take on web and mobile technologies.

    You are going to have to learn JavaScript for the purposes of front end development. You should also learn the principles of responsive web design and graceful degradation to produce web sites that look good on mobile. That obviously means a through understanding of HTML and CSS as well, which although not "programming" per say, are important technologies nonetheless.

    On the back end, Python and Ruby on Rails still have a lot of traction. node.js is rapidly gathering popularity as well, and since you already have to know JavaScript for front end work.it can make sense to use it on the back end also. All three of these have substantial following and demand on the market.

    PHP is on the way out, but still used, and probably not going away. It's main "advantage" is that it's the only thing that works on the numerous "bargain basement" web hosts that people still use for some crazy reason, and therefore, there's still a lot of applications, content management systems, and frameworks written in PHP. WordPress in particular comes to mind - a lot of smaller projects are just slapping some custom application on top of a WordPress CMS, since that's what the organization is familiar with.

    Now. for the subject of Mobile app development. Mobile apps can be important, but not every site should be an app.. Being able to articulate this to an employer is important. They may think their mom and pop online store needs a mobile app. They don't. They need a website that works well on mobile. A mobile app can supplement that, but it can't replace it. Users want apps to do things that are absolutely indispensable to them, not a screen full of icons for 200 different companies. Don't make the mistake of letting "oh, just download our app" be a substitute for poor mobile web design - for something that a user should have been able to easily do or find out in their mobile browser, they are likely to just go elsewhere instead. Similarly, don't make the mistake of thinking good web design = good app design. An app and a site are two different things.

    For iOS development, Objective-C is the way to go (and as far as Apple is concerned, the ONLY way to go). There are other technologies now that can produce iOS apps, but in the past Apple has made a big fuss and big show of banning or breaking other tools, I seem to recall them even going so far as to ban apps because of the environments used to develop them. This has relaxed somewhat lately, but there's no telling if they might do it again. Objective-C should be a smooth enough transition from C for you though.

    For Android, it's more or less a variant of Java, although there are ways to develop in other languages, including C and C++. There's pretty broad selections of tools available for you. Fragmentation is still a very real problem, but it doesn't have to be as big of a problem as it's made out to be - you just have to be aware of it and plan around it - it's not unlike the problems of responsive web design (although progressive enhancement is probably preferable to graceful degradation for apps)

    The other mobile platforms right now lack enough market share for most apps to worry about native development - develop a proper responsive website, and pay attention to make sure that it actually works, and you won't leave the Windows Mobiles and Blackberries of the world out.

  24. Re:Learn the background of languages by TapeCutter · · Score: 4, Interesting

    As for C also learn a object oriented one and a functional one

    OO syntax in any Turing complete language is just syntactic sugar. If you're a half competent C programmer you will be using OO techniques in any flavour of C. Take another look at K&R, now realise that virtually every code example is also a very good OO design example.

    --
    And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
  25. Re:Learn this by mysidia · · Score: 2

    Right. If you call yourself a C programmer with 15 years experience, and you don't know C11, then you're outdated. Junk heap.

    Bullshit. I code against to the ISO 9899:1999 C99 standard; C89, C99, and C++0x FTW.. No need for anything else.

  26. 'tis a Smorgasbord by pensivearchitec · · Score: 2

    The caveat to the rest of this is that I'm somewhat new to the web development frontier. (a yearish of unpaid experimentation)

    Having said that here are a few technologies/languages that I find highly useful, perhaps you will too.

    Redis, everyone needs a cache/queue, if someone says otherwise they're lying to you. The really cool part about redis is that operations done with it are (mostly) atomic at the operating system level, and it has persistent records of transactions, which sets it far apart from its other competitors. Redis is something I would use in any sort of web application backend.

    At least one of: rails/vibe.d/yesod/spray. These tools, while not ideal solutions, are extremely useful for maintaining separation of concerns, as well as rapid prototyping, I would consider knowing some framework essential.

    Ember.js/angular.js are both javascript frameworks that are extremely powerful, the necessity of these increases with the more interactivity you want, they're probably a bit overkill for most webapps, but I'd definitely recommend looking into one of these at some point.

    Foundation/Bootstrap are frontend frameworks for easily organizing the layout of your pages and styling them, again, for simple projects these will probably add more complexity than necessary to the project, but these are another thing I would consider essential.

    Postgresql is a rdbms similar to Oracle that has very powerful/fascinating features that no other db system has such as hstore which is essentially a key value store that allows you to input whatever in a column, which is great for unstructured/semi-structured data (e.g. user uploads). Mongo can't beat an ACID compliant json store. ;)

    I could go on for a while in this direction, but I hope this helps.

    Personally, I use rails/ember/foundation for frontend stuff and use spray/redis/postgres for the backend, they seem to fit my workflow the best and solve the problem at hand the most effectively.

  27. It's not about which technology by Taco+Cowboy · · Score: 5, Insightful

    The question that TFA asked "Which technology should I learn" is in itself, a wrong question.

    The author should have asked him/herself "What do I want to do 10 / 20 / 30 years from now?" and then proceed from there.

    There will always be technologies - many old technologies will still be around and some new technologies will be discovered / created - and once the author knows what kind of situation he/she wants to be in the future, he/she can start picking which route to go

    Many people have chosen the wrong tech and end up in the wrong career, but at the end of the day, it's up to that person to "right the wrongs" and to make the best situation out of the mudane, for its his/her life and he/she should be the master of his/her own life

    Take me, for example. Some 40 years ago I ended up in the States and did not know what to do. At that time there wasn't much for me to chose - genetic wasn't available, laser tech wasn't mature, and many fields were closed to me, a person who is not a born American.

    So I ended up in computing. I dabbled in both hardware and software ever since.

    Would I choose computing if I got the chance to start over ? Perhaps not. But, as I have said, back in the early 70's there wasn't a lot of tech fields opened to a nerdy kid from China.

    --
    Muchas Gracias, Señor Edward Snowden !
    1. Re:It's not about which technology by TWiTfan · · Score: 4, Funny

      "What do I want to do 10 / 20 / 30 years from now?"

      I'm not sure how useful that question is. I suspect I would need something somewhat more concrete than my REAL answer, which is "Sleeping on piles of $100 bills with many beautiful women."

      --
      The cow says "Moo." The dog says "Woof." The Timothy says "Thanks, valued customer. We appreciate your input."
    2. Re:It's not about which technology by JoeMerchant · · Score: 4, Insightful

      For the next 30 years, 2014 to 2044, you should know: basic health and hygiene, home maintenance and construction, cooking, gardening, maybe farming and animal husbandry if you are going to own some land.

      It doesn't hurt to understand finance, a little bit about the legal / political system.

      If you don't want to be held hostage every time your car breaks down, learning some mechanical skills is good too.

      Oh, yeah, and these computer things - that's a good way to earn money, use your brain in the manner of the oldest profession: become whatever people are paying for, and be ready to change and adapt as the market changes. Look back to 1984, predict from that point what skills you should have learned for 2014, the next 30 years are going to be just as volatile on the tech front, but those other skills have been valuable assets for hundreds of years (70ish for the cars), and will continue to be valuable into the future.

    3. Re:It's not about which technology by hodet · · Score: 4, Insightful

      Along these lines, I once heard someone say that asking what the world needs is the wrong question. You should ask yourself what you are passionate about, then do that, because what the world needs is people with more passion.

    4. Re:It's not about which technology by Dcnjoe60 · · Score: 2

      The author should have asked him/herself "What do I want to do 10 / 20 / 30 years from now?" and then proceed from there.

      10 years, maybe, but 20 or 30 is too far out to estimate when related to technology. Who would have imagined the current technology landscape and job opportunities back in 1984 or even 1994?

      In 1984, you were most likely programming in COBOL, FORTRAN, or C, and while those languages still exist only C is still widely used. Yes, there are still millions of lines of code being maintained in COBOL and FORTRAN, but nobody would declare either of those a career path to pursuit today.

      Even 10 years ago, the mobile space didn't even exist, at least not like it does today. For mobile, you would be looking at Blackberry development. Of course, the internet was alive and kicking, but even then, most sites were not dynamic like they are today and Java ruled the three-tier model.

      To answer the original question of what "new" technologies, normally the answer would be to build on what you already know. However, since the questioner's background is in C and embed systems, that's not going to be too helpful. Instead, you need to look at what market you want to get into. Android app development, learn Java. iOS then it would be probably be Apple's development stack. Web, definitely HTML5 and php and javascript. If you want to be doing system's work, then your C background will serve you well. Desktop applications - if for Windows, then you better bone up on .Net.

      However, with all of those, it really depends on how quickly you are planning to switch career paths. Most of those should be relatively easy for a C programmer to pick up, but will still take a long time to master. To be employable, you really need to master the language/tools, unless you are willing to take an entry level job. One way to pick up the skills, is to make the choice of what you want to learn and then attach yourself to an open source project or two (after you've learned the basics of the language in question). Not only will you be able to use any work you've done on the project as part of your resume, but you may find out if you really like the choice you've made without leaving your current job. In addition, you will be connected with other programmers and technologies that will further help you refine your skills.

      So, after this long post, my suggestion would be not what you want to be doing 10,20,30 years out, but figure out what you want to be doing 3 years out and then make a plan to get there.

    5. Re:It's not about which technology by pr0fessor · · Score: 4, Funny

      So your new career path is pro-athlete or rap star.

    6. Re: It's not about which technology by lostfayth · · Score: 3, Funny

      there's always sex-work.

      you dirty whore.

    7. Re:It's not about which technology by Anarchduke · · Score: 2

      Judging by our history of riots, wars, murders and the like, what the world really needs is less passion and more rational thought.

      --
      who prays for Satan? Who in 18 centuries has had the humanity to pray for the 1 sinner that needed it most? ~Mark Twain
  28. My Shop uses... by Charliemopps · · Score: 2

    My Shop uses (in order of importance):
    C#
    Java
    ASP.NET
    All popular versions of SQL (recommend learning MYSQL or PL/SQL first and then the rest of them will be cake)
    Office/VBA (I know this sounds stupid, but you get a lot of requests from office managers with no clue what they are doing in the form of word Docs, Excel spreadsheets, etc... etc... Knowing all the ins and outs of these programs will save you a lot of time. Like how the Excel Average function converts nulls to 0s by default)
    PHP
    VB

    Hope that helps.

    Oh, and I think VM is the way of the future (for good or ill) so I'd get used to using VMs.

  29. Re:HTML, CSS, JavaScript and progressive enhanceme by magic+maverick+ · · Score: 3, Informative

    There is no updated version of CSS. CSS 3 is not actually a thing. Instead, there are what are called modules. CSS 2 is a good starting point, because the basics are all in one place. And it's still all valid.

    HTML 5 isn't finalized. Moreover, learning HTML 4.01 (strict) and XHTML 1.1 will (as I pointed out in my post...) teach good habits. (And make a person appreciate the really good parts of HTML 5, like the new form parts.) Oh, and they are still valid...

    Unlike with something like PHP 3 and 4, there is no security risk in using the older versions of HTML and CSS. Moreover, unlike older versions of PHP, knowing the older versions of HTML and CSS can directly translate to knowing the newer versions. (A valid HTML 4.01 strict document is also, with a different doctype, basically a valid HTML 5 document.) PHP has deprecated loads of stuff, and has thrown out a lot of the bad ways of doing things in the later versions. Later versions of PHP are much more coherent than older versions. But CSS 2 is still excellent, if that's all you need.

    --
    HELP MY ACCOUNT HAS BEEN HACKED BY AN ILLIBERAL ART STUDENT SET TO DESTROY THE INTERWEBZ!
  30. Add a high-level language by TheloniousToady · · Score: 2

    You're already good at a low-level language, C. Now, add a high-level language (aka "scripting language") like Python. The two are complementary. Low-level is best when computer time is more valuable than programmer time, and high-level is best when programmer time is more valuable than computer time.

    Python is fairly easy for C programmers to learn because it imitates C as much as it can while still being Python. It's also a nice way to learn OOP, if you don't already know that. It's also very pleasant and fun.

    Some people don't like Python's lack of braces, but I think they're mostly being paid off by orthodontists. However, if you appreciate the minimalism of C, you should appreciate the minimalism of Python even more.

  31. My take after 20 years by BillBarnhill · · Score: 4, Informative

    Ok, most of the advice on here seems way off the mark, though some was good. Who am I to say something like that? A self-taught dev making six-figures and having worked 20 years.

    First, always be learning a new technology. Ignore the folks that said stop trying to learn new things.

    As for what to learn, there are two ways to go.

    One way is to track trends. You try to track all the trends and you're head will spin. The major trends though, as I see them, are: HTML/Javascript apps (including mobile apps), functional languages (on JVM learn Clojure, off JVM learn Haskell or Erlang), distributed and parallel computing (which are not the same, here again Erlang is good to learn, Go is another alternative, and Rust will be as well once they stop changing the syntax).

    Another way is to track the kinds of problems you want to solve. If you don't have a kind of problem you are passionate about, find one! That is a key way to differentiate yourself, market yourself, and enjoy what you do. Here though you'll need to do the research. Some popular problem areas right now are healthcare, sharing to address resource scarcity or cost (think Uber), and disaster management. A great way to get involved in these areas and learn while doing is to volunteer. You also will make a lot of great connections, learn a lot, and feel great about yourself in the process.

    To finish: always be learning something new, do something that you are passionate about, and give your time to others because you will be paid back many fold.

  32. The smallest set... by the+eric+conspiracy · · Score: 2

    Would be Java and HTML.

    Java gets you entry into mobile app writing and a lot of server side stuff for the web at the same time. Plus the amount of Java out there is immense. It's the Cobol of the 21st century.

    HTML gets you into the presentation and UI.

    Later add in Javascript. You can even pick it up on the fly, it isn't particularly hard.

    Good Java and C expertise is a pretty sweet combination.

  33. As a developer and IT Recruiter by Anonymous Coward · · Score: 3, Informative

    I'm a front end developer with around 15 years experience. I spent half of 2013 during a job transition experimenting with IT Recruiting. During sequestration, I spoke with a lot of C/C++ embedded guys that had been happily siloed at government contractors for the last 10-15 years and were suddenly confronted with a job market focused on web/mobile technologies. At least in the Philadelphia market where I work, I can tell you it was very tough for them.

    In my experience these technologies had the highest earning potential and demand in order.

    C#/ASP.Net - these developers had the most power and earning potential in the job market. Managers that took too long in their hiring/decision making process found their first, second, and third choice candidates were all snapped up before they could extend an offer.

    Java - is tenacious and still commands very high salaries.

    Objective C - falls into the category of managers wanting more years experience than the iphone has been in existence, so few developers match the requirements. Very high demand.

    HTML5/JavaScript/Jquery

  34. as a former embedded guy here is my 2 cents by ad5mqesj · · Score: 3, Informative

    I worked for 17 years as a mostly hardware and low level software person, with just enough MFC/Windows/Qt to make reasonable UI's. At the job I started 6 years ago everything is web based "enterprise" software. I now work on a small engineering team (about 8) in a very large company. I got hired for my expertise in C++ an dLinux to work on a biometrics project but as I finished it I needed to acquire skills more generally useful to the team. I started with PHP - it's very C like but with less type safety :). Modern PHP is much more object oriented, if you are comfortable with C++ it'll be very easy. Javascript is absolutely essential; JQuery and Knockout are nearly as essential (frameworks that clean up javascript and make it more portable). Any web app with more than 2 or 3 users needs to use AJAX rather than postbacks to have reasonable performance. In a windows shop you must learn ASP .Net and C#, Ojective C is useful if you want to target Apple products (phones or computers), but with HTML 5 you can do an awful lot without going native. Our apps use an abstarction framework to let one code base target all the popular phone O/S's with pretty standard web apps. (javascript/HTML front end, windows or linux backend REST service) Some SQL is very useful but you don't need to be an expert - any serious web development team will have a database expert who will do the DB stuff, you just need enough to code up test setups, prototypes and to talk to the DB guy. A Pluralsight subscription is very useful (no I don't work for them) I have learned a lot in a short time form their courses. Finally if you are going to work on "Enterprise" development you should really learn about Kanban and agile development since most of them use it in some form.

  35. Just wants to publish a mobile app and get rich... by Dareth · · Score: 3, Insightful

    The guy just wants to publish a mobile app and get rich... using "the smallest set of 'new technologies" possible.

    The answer is obviously the entire iPhone/Pad development environment and the entire android development environment.

    No need to worry about blackberry or windows phone so that cuts down the requirements a little bit.

    --

    I only look human.
    My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
  36. Dynamically Typed, Higher Level by wangstabill · · Score: 2

    Let me give you some advice, as someone who went to school for Computer Engineering (very aware of embedding programming) and now works for a major Internet browser vendor. C may have been considered high level back in the day, but relatively speaking is now one of the lowest level programming languages. While it's simple, and fast, it is verbose as hell to write anything useful. C's idea of portability is also bizarre, relative to modern higher level languages (autotools generates thousands of files). I love C, and it's my go to for lower level languages. I just cannot keep track of all there is to C++, it's like a dog that kept getting legs nailed to it until it was referred to as an octopus. C++ is a great language, but it's not for me. I have one lower level language that I'm expert in, and one higher level language that I'm expert in. Java, and C# in my opinion don't differentiate themselves enough from C (by design) as a dynamically typed language would.

    That said, it's worthwhile to learn multiple different languages, even if you don't master them, because each one has something to teach you, will change how you think of programming, and make you more effective in programming with other languages as you can reuse interesting patterns. Seeing other people say "don't follow new trends" is disappointing; it's so close minded that it's sad to see that they've closed themselves off from learning new paradigms.

    As far as higher level language is concerned, I'd recommend JavaScript. It's dynamically typed, which should be a new paradigm for you. Its loosely typed nature shouldn't be completely foreign to a C programmer (unless you don't understand C's implicit promotion and conversion rules). JavaScript is pervasive and you don't need an IDE for it (not like making an IDE for a dynamically typed language is trivial); just fire up your browser and you can play around with it. You'll find the web to be much more portable for your programs (though it's still not a perfect solution). JavaScript can also be used for the back end as well, with the Node.js runtime. Further, there are even higher level languages like TypeScript or, my favorite, CoffeeScript. CoffeeScript combines some of my favorite parts of Ruby and Python, but if you're not careful can generate some awful JavaScript (returning the evaluation of a for loop), but you can do the same with mistakes with C (generating awful assembly). JavaScript will also open you mind to functional programming, while not forcing it down your throat.

    PHP was my first love, but many developers fail to recognize it as a language and think it's tightly bound to Apache. Ruby has some of the most mind bending metaprogramming features, but the performance pails in magnitude to modern JavaScript VMs. Python's community has a split that I see as detrimental between 2.X and 3.X, but has some great features of the language. I'm really not sure what differentiates Perl anymore, as its regex functionality has been borrowed by Python, Ruby, and JavaScript. Lua might be useful in place of JavaScript, as it's embeddable within C projects and is used frequently in scripting game engines (so I would recommend that, or JavaScript). That said, I have learned something useful from all of the above, and am glad I took the time to learn more about them, even if I did not choose to master them.

    For my senior design project, I used C in an embedded device, as well as CoffeeScript to receive info and display it via a web interface. It was awesome to have such fine grain control of the bits when I needed, and the ability to create a Hash with a literal when needed. That's why I recommend on mastering one low level and one high level language.

    For a quick intro I gave recently on JavaScript: http://mozilla-ntu.github.io/s... For more on C and JavaScript: http://nickdesaulniers.github....

    If you don't agree that higher level is the way to go, Rust has an interesting new approach to systems programming, even if the APIs change every (still in beta) release.