[Last Call] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 878
  • Last Modified:

What programming language for a hobbyist ?

i have plenty of spare time at home ,i want to :
1- show off in front of friends /family with programming stuff.
2- get a feeling of accomplishment /self satisfaction .
3- maybe doing my own commercial programming project in future . one of the projects in mind need very high performance .

=> what programming languages i knew ?
i was visual basic 6 programmer , i know some c++ ,glanced at python and java. i am somewhat geek in computer.

=> what i know about programming languages in general ?
i know things like the difference between static VS dynamic typing , compiled VS interpreted , high level VS low level , what are things like API and software engineering ..etc

=> what is the result of my research so far ?
well, i was searching for an answer to the question for some time and i came up with the following "facts" (please correct me if i am wrong):
1- every programming language has advantages and disadvantages , when you choose a language you have to live with both the advantages and the disadvantages.
2- programming languages are usually more suitable for certain programming domain(s) than others .you have to use the right tool for the right job.
3- you need more than one language in your toolbox , so that you can select the language that is more suitable for the job at hand ,or even use more than one language to construct a program.

=>what is going on in my mind?
1-i am a hobbyist not a professional , so the approach of "multilingual tool set" may not be practical for people like me. probably i will not be able to learn a programming language every time one comes out!
2- in the matter of high level vs lower level programming languages they say that your expertise in a programming language determine your productivity more than the language itself. so maybe if i learned something that does not change every so often (like c++) and stick with it i will become (over time) more productive and get the best of both worlds :)
3- i don't like python ,despite being very productive it has very low performance and it produce a byte code that is very hacker friendly! ,if it was not hacker friendly i would combine it with c++ and i will be very happy.
4- java : bad performance. oracle purchase of sun worry me too much.
5- GO : pretty sexy but still in development.

sometimes i feel that i should go with 2 languages one high level (? java) and one low level (c++) language so that i can do anything : cross platform stuff /web /mobile.

sometimes i feel i should go with c++ and engage in the fun of participation in open source software like Linux

i am pretty lost :)

=> why i am asking this question ?
i don't want to make a bad choice . bad choice at this moment means i will waste a lot of time.so taking your kind advice / opinion is very much valuable .

your_comments_thoughts_advice();

Open in new window



thank you
0
docesam2
Asked:
docesam2
  • 5
  • 4
  • 3
  • +5
5 Solutions
 
Paul MacDonaldDirector, Information SystemsCommented:
You don't mention what platform you're targeting.  Certainly Java and C++ enjoy a wide variety of platforms, but aren't necessarily easy to learn or are hobby-worthy.

Visual Basic.Net is a decent option, but I'm biased towards it. C# is becoming popular, but like VB.Net, is Microsoft-centric.
0
 
HonorGodCommented:
This question is unusual in that you have provided a great deal of information.  For that, I thank you.
However, I don't completely agree with all of your "deductions". ;-)

Let's start with your early statements:

... I want to :
1- show off in front of friends / family with programming stuff.
    This implies that you want to be able to use a function rich language / environment.  ok

2- get a feeling of accomplishment /self satisfaction .
    This is obviously subjective, since you have to measure it.

3- maybe doing my own commercial programming project in future . one of the projects in mind need very high performance .
     So, you basically want marketable skills.  This is good, but you have to consider the fact that a viable "commercial programming project" is likely to require skills that are extremely difficult for a self trained programmer to acquire.  I'm not saying that it is impossible, just difficult, and therefore unlikely.

Results ... so far
1 - Every programming language has advantages and disadvantages,

>>> This part is certainly true.

     when you choose a language you have to live with both the advantages and the disadvantages.

>>> This part is less concrete.  For example, for performance (or other) reasons, there are instances where almost all of a project may be in a high-level language, with a very small portion is a low-level language for "critical" pieces.

2- programming languages are usually more suitable for certain programming domain(s) than others .you have to use the right tool for the right job.

>>> True, except for the "you have to"... I have seen instances where people have chosen to use the language they know for an unsuitable task, just because "learning something else" was something that they chose to avoid at all costs.

3- you need more than one language in your toolbox,

>>> Maybe.  It all depends upon what you need and want to do.  There are some very powerful, high level languages that can be used to solve the vast majority of problems that a hobbyist might want to investigate.

 so that you can select the language that is more suitable for the job at hand ,or even use more than one language to construct a program.

>>> Yes, see above.

... what is going on in my mind?

1-i am a hobbyist not a professional , so the approach of "multilingual tool set" may not be practical for people like me.

>>> True.  It all depends upon the time and effort that you have, and are willing to invest.

 probably i will not be able to learn a programming language every time one comes out!

>>> That is true for everyone.

2- in the matter of high level vs lower level programming languages they say that your expertise in a programming language determine your productivity more than the language itself. so maybe if i learned something that does not change every so often (like c++) and stick with it i will become (over time) more productive and get the best of both worlds :)

>>> Maybe.  Again, it depends upon a number of factors.  There are a number of high-level languages that are very involved, and complex (e.g., Java, C++).  Yes, they are fairly stable, but that doesn't mean that what you write now in Language X will be:

  A: Understandable by you some number of months in the future (e.g., 6)
  B: The best way to write the code, as our experience increases, we tend to improve our programming techniques.

3- i don't like python, despite being very productive it has very low performance

>>> Wow, I was really with you up to this point.  I think that your definition of "low performance" may be very dependent upon the algorithm, and style that was used.  Since you have already identified yourself as a hobbyist, it is very likely that you may be unaware of techniques (e.g., choice of data structures) that can have a huge bearing upon the performance that you experience.

...  and it produce a byte code that is very hacker friendly!

>>> Again, wow. All of a sudden, you've gotten off track, in my opinion.  Up to this point, you appear have been in one place ( "What's the best way for me to learn programming?" ), and how you've changed direction ( "Oh, what is the most secure way of programming?" )

 ,if it was not hacker friendly i would combine it with c++ and i will be very happy.

>>> What kind of programs would a hobbyist be writing where they need to be concerned with "hacker friendly byte codes"?!?

4- java : bad performance. oracle purchase of sun worry me too much.

>>> Hm, I don't know how you measure "bad performance".  I have been programming for more than 40 years, and have written in somewhere between 25 and 40 languages (most of which I haven't touched for decades).  The only time that I encountered a situation where a Python program "wasn't fast enough" (it required between 1.5 - 2 hours to complete the processing), I was able to quickly implement it in Java, and the result was a program that required less than 10 seconds to do the same task.  So, again, I don't know how you came to this conclusion.

5- GO : pretty sexy but still in development.

>>> New languages are more likely to change, and the available tutorials, and information about using them are more likely to be hard to find, as well as being hard to understand.

sometimes i feel that i should go with 2 languages one high level (? java) and one low level (c++) language so that i can do anything : cross platform stuff /web /mobile.

>>> Hm, I would categorize C++ as a mid level language.  I would call Assembler a low level language.  However, assembler language is hardware specific, and unlikely to be a good choice for a hobbyist.

sometimes i feel i should go with c++ and engage in the fun of participation in open source software like Linux

>>> I think that you've started a reasonable discussion. ;-)

I would certainly not hesitate to encourage the use of Python.  Not only because of it readability, and "batteries included" mentality, but the Python (open source) community is very good at providing information and assistance.

Good luck in whatever you choose.

=> why i am asking this question ?
i don't want to make a bad choice . bad choice at this moment means i will waste a lot of time.so taking your kind advice / opinion is very much valuable .
0
 
DoveTailsCommented:
Without excessive detail here's my two cents.  

I considered starting with C++.....however, your mention of being a hobbiest and after programming in VB.Net for several years, I'm glad I did not pursue C++ to begin with.

VB and C# are good places to start.  Using VB has been a good choice for me. There is a lot of support out there. To simplify things the choice is really between VB and C#.

Having said that, I feel I would recommend C#.  The reason I mention this is from using the book "Beginning Asp.net 4: In C# and VB", by Imar Spaanjaars.  This walks you through exercises with both languages.  I started with VB and do not regret that decision but after working with this book I'm now learning C#.    If you have the time, you could work through creating a "Hello World' program in both languages to give you a feel for what you may prefer.   There's a lot of sites / books out there to help you get started.
Good luck
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
docesam2Author Commented:
You don't mention what platform you're targeting.  Certainly Java and C++ enjoy a wide variety of platforms, but aren't necessarily easy to learn or are hobby-worthy.
the problem is : i don't need to target a specific platform. i need pure fun .
0
 
Paul MacDonaldDirector, Information SystemsCommented:
I mean, are you programming for the web (HTML, PHP, Javascript, ASP.Net, Silverlight, Flash, etc)?  

Or for the desktop (VB.Net, C++, etc)?

Do you want and IDE like Visual Studo or JCreator?  Or will you write in Notepad?

Do you want to write games?  Or scientific simulations?

All these have a bearing on what I would recommend.  
0
 
Chris Raisin(Retired Analyst/Programmer)Commented:
For pure fun and showing off to friends, I would say your best bet (easiest to learn and fastest results without knowing too much) is Visual Basic 6.

The problem is, it is no longer on the retail market because it was superceded by Visual Studio (which includes Visual Basic.Net).

You may be able to get a copy of VB6 through eBay. Although it is no longer sold by Microsoft (or supported) it is still by far the most prevalent programming language for enthusiasts who are producing small programs just for themselves or small businesses/friends. VB.Net is much superior but much harder to program for a new programmer. I would avoid C++ or C++.Net

VB6 is forgiving of bad coding practices (such as not declaring variables etc.) but of course that could lead to logic errors!

But what do you care about that? LOL :-)
For fun and a fast start in programming my recommendation is still VB6
(Visual Basic 6....or even earlier version ifyou can't get VB6).

You will probably (of course) get recommendations from everyone to use THEIR favourite language. I use VB.Net but I know that will be too involved for "fast start and fun" programmers.

Give it a go! Impress your friends! There is lots of support on this site for VB6
and there are many websites with code you can download, compile and play with.
Just search for "VB6" or "Visual Basic 5" and see what I mean.

Cheers
Chris
(craisin)
0
 
Chris Raisin(Retired Analyst/Programmer)Commented:
"OOps...I meant "Visual Basic 6" not "Visual Basic 5" in the last paragraph.....:-)
0
 
docesam2Author Commented:
thank you HonorGod for your comments

HonorGod  said >>> What kind of programs would a hobbyist be writing where they need to be concerned with "hacker friendly byte codes"?!?

i mentioned that maybe i would like to produce a commercial software ,are you welling to make hacker takes my code away :))
otherwise maybe python and c++ will be the best ever !!


====================

thank you DoveTails for your comments

>>>  DoveTails said : I'm glad I did not pursue C++ to begin with.

shall you please clarify why it is so ?

=====================
thank you craisin for your comments

>>>craisin said : You will probably (of course) get recommendations from everyone to use THEIR favourite language.

probably , that is why the justification of the choice becomes important.
0
 
HonorGodCommented:
> maybe i would like to produce a commercial software

  Whatever you choose to do, I wish you well.
0
 
cupCommented:
If you really want to show off, learn the GPU programming language.  You can write the downloader in any language but what you can do with a graphics card is pretty amazing.  It runs stuff in parallel so even with 16 GPU cores, you can have spectacular graphics and even use it as an array processor.
0
 
docesam2Author Commented:
If you really want to show off, learn the GPU programming language.  You can write the downloader in any language but what you can do with a graphics card is pretty amazing.  It runs stuff in parallel so even with 16 GPU cores, you can have spectacular graphics and even use it as an array processor.

thank you

shall you please enlighten me with some examples of what can be done? or the names of some of these technologies /languages used ?

thank you
0
 
taggarwal_expertCommented:
According to me, it depends on your level of experience. Say, if you are student then you should start with C (Procedural & Simple) language. After that you should go for Object-Oriented Languages (Java or C++). If you are not a student, then you should concentrate over the domain of your interest level. Then based on that domain, you can choose the appropriate language. That will be really helpful to make a significant change in your career progress. But, if you select any language of your interest and depends on that language if you choose domain, that might not be as beneficial. I might be wrong in this advice, but I used to apply this with me.
In brief, I can explain this in terms of programming pseudo-code:
if (you are a student)
{
   Start with C (Procedural Language)
   Move on to object-oriented languages (C++/Java etc...)
}
else if (you are programmer)
{
    Select domain of your interest
    Based on domain chose language
}
Ex.
If you chose networking/system-programming domain, you will have to go for hardcore C.
0
 
taggarwal_expertCommented:
Add to last comment from my side:

your_comments_thoughts_advice()
{
if (you are a student)
{
   Start with C (Procedural Language)
   Move on to object-oriented languages (C++/Java etc...)
}
else if (you are programmer)
{
    Select domain of your interest
    Based on domain chose language
}
}

I think if anyone go by this way, he/she'll be able to achieve all these:
1- show off in front of friends /family with programming stuff.
2- get a feeling of accomplishment /self satisfaction .
3- maybe doing my own commercial programming project in future . one of the projects in mind need very high performance.

If you want any clarification, how to achieve these in my way... please let me know.
0
 
cupCommented:
Just google for "GPU Programming Tutorial" and see what comes up - you have textures, rendering, ray tracing, parallel computations etc.  Some of them even take care of overlaps when sprites move over each other.
0
 
docesam2Author Commented:
thank you guys for your comments.

nobody so far commented on WHY i should learn a particular language over the others. "why" is more important than "what" imo.
0
 
Paul MacDonaldDirector, Information SystemsCommented:
Pointless, really, in the absense of any idea of what you want to do with it, but Visual Basic is called "Basic" because it's generally the syntactically easiest to read and understand.  If you need a "why", there's mine.

Having said that, if you were going to write software to run the space shuttle, Visual Basic would probably not be my first recommendation.  That's why the "what" matters.  If you're just farting around to say "See what I can do!" then one language is as good as any other.  If you want something you can pick up relatively quickly, Visual Basic is probably the way to go.
0
 
Chris Raisin(Retired Analyst/Programmer)Commented:
I thought my answer gave the exact reasons why:

"VB6 is forgiving of bad coding practices (such as not declaring variables etc.) but of course that could lead to logic errors!

But what do you care about that? LOL :-)
For fun and a fast start in programming my recommendation is still VB6
(Visual Basic 6....or even an earlier version if you can't get VB6)."

The reasons (both stated and implied)  are: "Easy to pick up, powerful enough to impress friends and have fun and produce quick results"

By the way, "BASIC" is a bit of a misnomer. It is unfortunate that it has the words BEGINNERS in the expansion of the acronymn. Although initially it was designed for beginning programmers (to save them from the spurious Assembly code, Fortran, Cobol and others) and designed for PC rather than mainframe, it has developed into the superior "VB.Net" which is certainly not suitable for a complete Beginner. I wish that they had called it something else rather than BASIC , but there you are! :-)

Anyway, good luck with your quest!

Cheers
Chris

0
 
frangonveCommented:
If you like codeless visual programming I'll suggest you:

Limnor Studio for .Net environment (currently free) building C# code
Tersus (Eclipse IDE) for MS Windows, Iphone, Android (Open source)

Best regards

Francisco
0
 
frangonveCommented:
Oops...

Tersus supports Linux too.

Francisco
0
 
cupCommented:
There is also "software through pictures" tools like matlab.  Basically every component is treated as a sofware integrated circuit.  It has both inputs and outputs.  All you need to do is select the components eg integrator and connect the inputs and outputs through it.  Many engineers love this.  Great for those who think coding is so last century, have very fast machines and love the clicky stuff.
0
 
docesam2Author Commented:
i expected people telling me why they made the suggestion they provided.lack of justification leave me clueless.
0
 
HonorGodCommented:
Thanks for the assist and the points.

Good luck & have a great day.
0
 
Chris Raisin(Retired Analyst/Programmer)Commented:
Thanks for the points.....good luck with your quest!  :-)
0

Featured Post

[Webinar] Cloud and Mobile-First Strategy

Maybe you’ve fully adopted the cloud since the beginning. Or maybe you started with on-prem resources but are pursuing a “cloud and mobile first” strategy. Getting to that end state has its challenges. Discover how to build out a 100% cloud and mobile IT strategy in this webinar.

  • 5
  • 4
  • 3
  • +5
Tackle projects and never again get stuck behind a technical roadblock.
Join Now