Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie

most efficient languages for different programming scenarios

Options
2»

Comments

  • Registered Users Posts: 476 ✭✭RoRo979


    Yep I would say that learning the foundations of one server side language and then getting stuck in building a web app or mobile app from scratch or with a popular app framework would be a good way to go. There's plenty of online guides about the place to help you on your way.

    Java is a good all rounder and if you learn that and did a web app then you could smoothly move on to Android development eventually afterwards. Python can be used for scripting but would be interchangeable with Java in that case of web apps.

    In the process of building an app then you'd pick up all the other necessary stuff (SQL, XML, JavaScript/JQuery) as you go along.

    thanks that was good info, I plan to make a few sample information based/low art mobile apps in the coming months to test my knowledge and begin building a portfolio. Would SQL, XML, JavaScript/JQuery really be used in making an app? i was following a few tutorials not too long ago and they were never mentioned. I was using "MIT app inventor" to practice on, Whats the opinion of this?


  • Closed Accounts Posts: 2,894 ✭✭✭UCDVet


    There's no hostility, just telling you what I think. Completing projects, not coming up with some abstract action plan is the way to become a software devopeloper.

    Plus knowing Python or Objective C is only part of the story. There are dozens of concepts and frameworks surrounding application development for any platform that go beyond language.

    I've seen it before. The junior who knows C++ but can't actuallly get anything done.

    So I repeat my advice. Projects, not languages. Just get started and learn from mistakes.

    I agree with you 100%, but on the flip side....

    I'm a '.Net Developer' - not because I want to be. My favorite class in uni was a .Net class and it was right before I graduated. I ended up getting a C# job as my first real job. It was a winforms application. After that, I went looking for a second job and.....wouldn't you know - the companies that were interested in me wanted a C#/Winforms developer. At one point, I was able to get hired on as a VB.Net/Winforms developer. Now I've got like 10 years of professional development experience - all in .Net

    I don't want to lie on my CV, but I'm looking for jobs now and even though I spent most of my time doing a masters in c.s. using Python and completed a bunch of simple side-project/puzzle type things in Python, when I apply to be a Python developer I get nowhere. I've also done a reasonable amount of ASP.Net - I wrote an HTML5 game, mostly javascript, and I've fumbled around with .css enough to get whatever stupid website I'm making to look okay. But when I apply for web development jobs, nobody wants to touch me. I've even done some websites at my current job, and I have listed that work on my CV, but it's a tiny part of what I did (even though they did come out quite nicely, IMHO).

    So even though I've got these projects and I even include a github link on my CV - the only people that ever want to interview me are people looking to hire a C# desktop developer (winforms or WPF).

    I don't know if it's like this for everyone, but I'd advise people to be really careful with what they choose as their first job :)


  • Closed Accounts Posts: 5,191 ✭✭✭Eugene Norman


    UCDVet wrote: »
    I agree with you 100%, but on the flip side....

    I'm a '.Net Developer' - not because I want to be. My favorite class in uni was a .Net class and it was right before I graduated. I ended up getting a C# job as my first real job. It was a winforms application. After that, I went looking for a second job and.....wouldn't you know - the companies that were interested in me wanted a C#/Winforms developer. At one point, I was able to get hired on as a VB.Net/Winforms developer. Now I've got like 10 years of professional development experience - all in .Net

    I don't want to lie on my CV, but I'm looking for jobs now and even though I spent most of my time doing a masters in c.s. using Python and completed a bunch of simple side-project/puzzle type things in Python, when I apply to be a Python developer I get nowhere. I've also done a reasonable amount of ASP.Net - I wrote an HTML5 game, mostly javascript, and I've fumbled around with .css enough to get whatever stupid website I'm making to look okay. But when I apply for web development jobs, nobody wants to touch me. I've even done some websites at my current job, and I have listed that work on my CV, but it's a tiny part of what I did (even though they did come out quite nicely, IMHO).

    So even though I've got these projects and I even include a github link on my CV - the only people that ever want to interview me are people looking to hire a C# desktop developer (winforms or WPF).

    I don't know if it's like this for everyone, but I'd advise people to be really careful with what they choose as their first job :)

    Yes. However companies care about specialisation. The full stack developer is hireable in some start ups and it's good for grads, after that experience matters. Rather than bemoaning specialisation people should embrace it, unfortunately that's more difficult with certain career paths.


  • Closed Accounts Posts: 2,894 ✭✭✭UCDVet


    Yes. However companies care about specialisation. The full stack developer is hireable in some start ups and it's good for grads, after that experience matters. Rather than bemoaning specialisation people should embrace it, unfortunately that's more difficult with certain career paths.

    I might be taking this thread out of context, but the impression I got from the original poster was, 'I want to know which languages are 'most efficient' in different situations, so I can go out and learn the one that I decided I want to learn'.

    For someone starting off their career, whatever language they are most comfortable with is likely to be the one they get their first job in. And after that, it's very easy to continue, because as you say, companies care about specialisation.

    I agree with Colonel Panic's point about actually *writing stuff*. I do know people, usually students, who think they either 'know' a language, or they 'don't' and if you know two languages, you are better than a dev who knows one. I'd much rather work with someone who wrote something cool and useful on GitHub than someone who 'knows' four languages, three of which we don't use.

    But at the same time, I do think people should be very careful about where choose to spend their time, especially if they are starting out, because it is so easy to shape a career (or at least a significant part of it) by their choice.

    I think looking around to carefully decide which language/stack you think you might want to spend the next 15 years with is really smart. Making a list of things so you can tick off each one though, probably isn't.


  • Registered Users Posts: 2,022 ✭✭✭Colonel Panic


    I hear ya, UCDVet. I'm lucky in that I've got a lot of experience across different languages, frameworks and platforms but I'm still most hireable as a server side C/C++ developer because that's where 60% of my experience lies.


  • Advertisement
  • Registered Users Posts: 476 ✭✭RoRo979


    UCDVet wrote: »
    I might be taking this thread out of context, but the impression I got from the original poster was, 'I want to know which languages are 'most efficient' in different situations, so I can go out and learn the one that I decided I want to learn'.

    For someone starting off their career, whatever language they are most comfortable with is likely to be the one they get their first job in. And after that, it's very easy to continue, because as you say, companies care about specialisation.

    I agree with Colonel Panic's point about actually *writing stuff*. I do know people, usually students, who think they either 'know' a language, or they 'don't' and if you know two languages, you are better than a dev who knows one. I'd much rather work with someone who wrote something cool and useful on GitHub than someone who 'knows' four languages, three of which we don't use.

    But at the same time, I do think people should be very careful about where choose to spend their time, especially if they are starting out, because it is so easy to shape a career (or at least a significant part of it) by their choice.

    I think looking around to carefully decide which language/stack you think you might want to spend the next 15 years with is really smart. Making a list of things so you can tick off each one though, probably isn't.

    That is exactly what im looking for. I dont believe/want to be hired by a business for some time yet (4-6 years). I most definately do not want to go into a job "knowing" a language but not knowing how to best implement it.

    To get a full knowledge of the language i dont believe i can just watch videos on youtube/ college lectures and then ill know exactly what to do. I want to know what to do from experience because i would have hopefully tried a similar project by then.

    I think the fault is mine for not stating clearly what exactly I want to do, i moreso asked for a broad opinion on which languages are best for general web development/ mobill application.

    I will say what im hoping to do and hopefully I will be able to be guided on the right path and reccommended the correct/best/preferable languages. These websites/apps to start are not intended to earn me a living or even earn any money. I am not doing the first lot to make it big, moreso just for experience.

    My Plan
    I wish to begin developing apps, using MIT app inventor with Java I have begun making sample apps, no point in putting them on the market, moreso just to test features and see if i can implement them. Using gps.accelerometers,screen orientation,vibration, dialogue and have been making good progress.

    The first few apps will be information based: market is already flooded with them I understand but just so i can get the experience of making them and i already have knowledge on them:
    First most basic one:
    Quote of the day: app contains simply many quotes and pushes a quote to a users phone daily.

    Healthy foods: An eastern medicine type app, contains list of all healthy foods/spices etc. What the are supposedly help the cure and nutritional benefits of them.

    The next 3 is where i may have diffuculty with and am hence wondering what languages would be necessary: I am hoping that they will contain a forum. Where people can/cannot(unsure) make an account and discuss topics with each other.

    Anonymous app: This may be controversial however im not looking for an argument. I believe in the group anonymous and what they do. This particular app may not be very hacking based mainly information based. People can go on and see current news which the world should know about. Also have a choice of selecting geographic locations and there would be news about geographic areas and people can comment on these areas to try and organise protest/charity events/ alert others of what news isnt covering.
    Leaving cert app: some may not think there is space in this area for another but believe me there is. While doing my LC I researched apps and websites to see what help is available, they all have their pros and cons, I know all these pro's and can mix them together. This will be my only early app with IAP.

    this is my first game app:
    Fishy: this will not be the name but is the name of a game which is very similar. Concept- start small, eat things smaller than you and you grow, if hit into another user that is bigger you die. If this game was to be single player I would be fine to learn how to do it, however the multiplayer concept i am unsure of and hence am looking for what languages i need to know to accomplish this.

    Websites:
    This will obviously be further down the line as a lot to learn. I wish to basically link particular website + apps together. So getting them to look like a website i believe I will be fine, Javascript,HTML5,CSS3(SASS,SCSS will research myself)

    but getting the website to communicate with the app is what I am looking for help on.

    Leaving cert
    Cant see it being much different than the app. All notes/sample answers/exam papers/question by topic. Would have to think of any additional features that could be added.

    dont believe there is a point in making a website for the others, seeing as there is constant fixed costs with a website no point in losing money for the sake of it on hosting etc. So my Leaving Certificate app/website will be my first proper proper app. Everything done as good as i can possibly do. The others are more for learning.

    Apologies for not stating this at the start and for it being so long. I hope someone can try guide me in the right direction. Points I am pondering:-
    - A functional website app. Cordova. May not be smooth to use however but will be cross platform. Potential for The LC app
    - C++ to make a cross platform app.

    I wish for Java to be my main, specialised language. I think it is a great language, am enjoying learning it and has many uses. However this is Android only and many LC students are unfortunately IOS.

    Thank you everyone


  • Closed Accounts Posts: 5,191 ✭✭✭Eugene Norman


    I don't really think you can use c++ for portability except perhaps in the business layer.

    You look like you are specialising in Java. That's a good decision.


  • Closed Accounts Posts: 2,103 ✭✭✭Tiddlypeeps


    I don't really think you can use c++ for portability except perhaps in the business layer.

    C++ is good for portability in mobile games. It works because most mobile games sit on top of OpenGL and generally don't really interact with the device specific API's unless strictly necessary (for example accessing hardware specific stuff like camera etc). You can very easily develop games for both iOS and Android using mostly the same code base if you use C++.

    It's not the best choice for general apps tho.


  • Registered Users Posts: 1,275 ✭✭✭bpmurray


    I think the OP really should look at his career goals rather than technologies for their own sake. If the goal is to work in an enterprise, then much of the dev work will be the old faithful - on the one side, there's Java, JSP and a set of libraries; on the other there's the MS version with C#, ASP and a set of their libraries. For both there's the web client, and that can be using any of the many frameworks, but ultimately it's all HTML, JS and CSS (a.k.a. DHTML).

    The above covers probably close to 90% of the job market and, for that matter, the job applicants. So it's important to have something else shiney on the CV, e.g. mobile development, CI/CD pipeline - actually Ruby with Chef fits in nicely here.

    One very, very important aspect missing from all this are the soft skills: where is the emphasis of the passion and interest and willingness to share? No publications, no mentoring at CoderDojo, no participation in meetups, etc. These all count enormously when going for a job - don't forget these!


  • Registered Users Posts: 2,494 ✭✭✭kayos


    Not a single mention of a functional language?


  • Advertisement
  • Registered Users Posts: 7,468 ✭✭✭Evil Phil


    Yep, learn one language really well as the skills will be transferable. Learn SQL too, JSON and XML are good to know and how to use them with your programming language of choice. But learn one language really well.

    If you don't want it to be Java then do a bit of market research into what languages are currently in demand and focus on one of them. But it seems Java is the language of your course so I'd stick with that.

    But if you want to be a programmer spend the next few years learning one language really well.


  • Registered Users Posts: 1,922 ✭✭✭fergalr


    OP:

    Commendable that you want to learn more than your course.

    You are doing this wrong though. You are trying to learn application area competencies. These are large in size, and change fast, and won't grow you as much in the long run.

    You should instead be learning languages that will broaden your fundamental skill base, if you've got a few years to do this.

    I'm assuming you've learned Java in college, and are trying to build the base of a good career, rather than learn stuff that gets you the most well paid job asap.

    Consider picking up Python; its well designed and productive and clean, and will help you learn to code at a higher level, quicker than Java-OOP-land; but its not far from Java.

    Consider learning a language without managed memory, as a fundamentals exercise. C is fairly clean. Don't try write something huge or spend a lot of time here, but its worth working with pointers etc for a bit, and seeing how people write highly efficient data structures in C.

    Finally, expand your horizons with something like a LISP (Clojure? Scheme?) or a functional language like Haskell or Scala.

    Learn about data structures, algorithms, distributed systems over and above framework du jour.


  • Registered Users Posts: 1,922 ✭✭✭fergalr


    Evil Phil wrote: »
    Yep, learn one language really well as the skills will be transferable. Learn SQL too, JSON and XML are good to know and how to use them with your programming language of choice. But learn one language really well.

    If you don't want it to be Java then do a bit of market research into what languages are currently in demand and focus on one of them. But it seems Java is the language of your course so I'd stick with that.

    But if you want to be a programmer spend the next few years learning one language really well.

    Disagree, think this is bad advice. Sure, start out by getting proficient in one main language, and learn it at least to solid intermediate level.

    But after that, or even as you go, you'll learn more and be exposed to more ideas by diving into several different languages.

    Learning Python made me a better Java programmer than a lot of extra Java would have.


  • Registered Users Posts: 3,945 ✭✭✭Anima


    You can't go wrong learning C++ inside and out when it comes to learning how programming works. C++ has many popular features of other languages plus all the memory management stuff. Modern C++ is quite high level and not too difficult compared to the old style C++ that most people hated.

    Learning how features of the language work under the hood is also valuable. It requires you to learn a little bit about the hardware, compilers, performance considerations etc. It's also kind of required seeing as you can get very convoluted errors when using the STL or templates in general. However that might change in the future with the new standard.

    Functional style programming is also becoming a lot more popular. Even in non functional languages. C++, Java, C#, Javascript all have lambdas and things like that now so that's worth taking a look at.

    Having said that, the most important skills are the intangible ones when it comes to programming. Being able to deconstruct a problem into smaller pieces and writing good and maintainable code to solve it is what makes a good programmer. Knowing which algorithms or data structures to use and making good design decisions just comes with experience and reading a lot. Tools fall in and out of favor all the time so just learn the fundamentals well.


  • Registered Users Posts: 476 ✭✭RoRo979


    I think the OP really should look at his career goals rather than technologies for their own sake

    while that would be wise, as stated before my view on this topic is quite "naive". Im not going fully into this to ensure i willl get a job in the future or be able to set up my own business from it. Right now, and for the next few years, programming will simply be a hobby. Something i can do for fun in my free time ( yes i do actually find programming to interesting/fun), A few of my friends do CS and a few have brought app/website ideas to me to make with them. While making money, and specializing in what employers are looking for. As stated before:
    These no point trying to plan out your next 10 years leaning. Popular languages will change, the market will change and your interests will change.

    Right now its just something I wish to do from a social point of view to do with my friends, personal so i can spend my time productively/doing something I like and of course constantly in the background, keep on trying till you get that "Lottery" app or even just some income coming in.
    Not a single mention of a functional language?

    To be quite honest i barely even understand what the difference is between the languages hence why it wasnt mentioned. I did some research before and all i really came to is that different "way"of programming, keeps your mind going, mathematically based. Some user posted a link which i read there
    Learn at least a half dozen programming languages. Include one language that emphasizes class abstractions (like Java or C++), one that emphasizes functional abstraction (like Lisp or ML or Haskell), one that supports syntactic abstraction (like Lisp), one that supports declarative specifications (like Prolog or C++ templates), and one that emphasizes parallelism (like Clojure or Go).

    All these types I am yet to put research into to fully understand so I may not be mentioning some, simply because i dont understand it yet.
    Sure, start out by getting proficient in one main language, and learn it at least to solid intermediate level.

    Indeed and that will be Java for me, but all the other languages which i wish to learn, Indeed is very unefficient use of time as if learn a specific language for specific use and dont work in area like that in the future it would have simply been a waste of time.

    From my "business plan" below, which shows what I wish to achieve in my free time or with my friends, what is it that I need to complete the task at hand.

    Java would be needed, python would be good to learn at some point but would it be a priority now e.g will I need to use it for the apps/websites listed below.

    I am sure there is a constant debate about which programming languages are better: funstionality/popularity/ease of learning - these factor(s) earn some the top place. But just in your personal opinion, what are the best languages that i need/should know to complete this task. Keep in mond I may not necessarily be learning all of them, I may search for a friend that is already experienced in that language.

    Thank you everyone again, I apologies for the lack of clarity in the direction of this thread. as you all know, I am still a novice, so i may sometimes talk about things i think i know/makes sense but really doesnt at all :D


Advertisement