• Post Reply Bookmark Topic Watch Topic
  • New Topic
permaculture forums growies critters building homesteading energy monies kitchen purity ungarbage community wilderness fiber arts art permaculture artisans regional education skip experiences global resources cider press projects digital market permies.com private forums all forums
this forum made possible by our volunteer staff, including ...
master stewards:
  • Anne Miller
  • Nicole Alderman
  • r ranson
  • Pearl Sutton
  • Mike Haasl
  • paul wheaton
stewards:
  • Joylynn Hardesty
  • Dave Burton
  • Joseph Lofthouse
master gardeners:
  • jordan barton
  • Greg Martin
gardeners:
  • Carla Burke
  • Ash Jackson
  • Kate Downham

What computer language to learn first?

 
pollinator
Posts: 3028
Location: Officially Zone 7b, according to personal obsevations I live in 7a, SW Tennessee
1118
forest garden foraging books food preservation cooking fiber arts bee medical herbs
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Well, that pretty much covers it. Does the language to choose depend on what the student is interested in?
 
pollinator
Posts: 123
Location: Sierra Nevada Foothills, Zone 8b
23
dog forest garden fish fungi trees hunting books food preservation building wood heat homestead
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
As the proud holder of an associates degree in computer science...

I'd say Python. It always seems to be more fun than others. We learned Java and C in school. C is cool if you are making actual things (like embedded systems) but it always ends up pissing me off eventually. In fact, I actually hate computer programing but when I get the itch to play around I choose Python. Its fun to put 124349**30821 into IDLE just to see really big numbers...
 
pollinator
Posts: 210
Location: Hamburg, Germany
45
  • Likes 3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Joylynn Hardesty wrote:Well, that pretty much covers it. Does the language to choose depend on what the student is interested in?



Kind of, yes.  If the student is ACTUALLY interested in, say, marine biology, there's probably some special language that researchers/mappers/statisticians/etc. use and it would be good to be familiar with that.

The fastest way to start writing code and actually get something that works is to do it in Python.  And as someone who has worked for 20+ years in IT w/o a CS degree and w/an allergy to real programming, it's enough to get along in support roles.

But for getting a programming job?  Being good in Java will get you in to most web development jobs.  Being good in C/C++ will let you work on native code.  Both will make you good money.

Languages come and go, all very trendy.  The 3 listed above have lasted a long time and if you know them you can pretty easily pick up the trendy ones.
 
gardener
Posts: 696
Location: Durham, NC
245
hugelkultur gear urban cooking building writing woodworking
  • Likes 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I have found very little excuse to use any other language over Python in my 25 years as a software developer.  

It is certainly true that some languages are faster for certain things. For example, if you are processing millions of records, maybe use C over Python.  If you are doing a dedicated Windows desktop application that will never, ever, and you are absolutely sure never ever will be used on another platform, maybe .NET.  If you are doing mainframe programming, COBOL.  

Otherwise, Python's readability, portability, and flexibility trump almost any other concern.  I've done plenty of intensive bioinformatics dataset processing in Python.  PANDAS gives you a wealth of data processing options.  It's excellent for web scripting, dev ops, game development...

I've had many people over the years tell me how other languages are superior for blah-blah-blah because blah-blah-blah and by the end of the conversation I hand them the fully functional program I wrote in Python while they were talking. :)
 
Joylynn Hardesty
pollinator
Posts: 3028
Location: Officially Zone 7b, according to personal obsevations I live in 7a, SW Tennessee
1118
forest garden foraging books food preservation cooking fiber arts bee medical herbs
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Umm... What the kid wants to do... Maybe web design, coding. Making two-dimensional games. Hobby stuff. What The Dad wants him to do... Have a basic language to start with if he ends up going in this direction for a career.

He has done some coding stuff at Khan Academy's programming courses. If I understand correctly, what he has done is programming within a program. He has not completed everything available on Khan. I heard about Code Academy from student discussions with my kid on Khan. Webucator has self-paced courses. Are these quality places?

Where else can languages be learned?
 
Morfydd St. Clair
pollinator
Posts: 210
Location: Hamburg, Germany
45
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Joylynn Hardesty wrote:Umm... What the kid wants to do... Maybe web design, coding. Making two-dimensional games. Hobby stuff. What The Dad wants him to do... Have a basic language to start with if he ends up going in this direction for a career.

He has done some coding stuff at Khan Academy's programming courses. If I understand correctly, what he has done is programming within a program. He has not completed everything available on Khan. I heard about Code Academy from student discussions with my kid on Khan. Webucator has self-paced courses. Are these quality places?

Where else can languages be learned?



Khan Academy has a good rep.  I'm not familiar with the others.  C Gillis has a personal recommendation here:  https://permies.com/t/40/141091/permaculture-fragmented-game-changing-crisis#1106938

My company pays for O'Reilly and LinkedIn (which used to be Lynda.com, iirc) and of course all the O'Reilly books are bibles for the specific topics.  

What about a community college?  Yes, you're paying $ but you get personal instruction and a few credits that could be transferable.  And in my procrastinating case, you have the stick of failing to keep you going even when it's dumb and boring.  I assume everything's being taught remotely right now, which should be fine.
 
Posts: 66
19
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
In my previous life as a gubmint scientist, I was responsible for data acquisition/transport from sensor packages located at remote observatories. We used C/C++ for the instrument and satellite/internet interfaces, and Java (later Python) for the receiving/distribution interfaces at the central collection point.

Most of us also kept a personal-use scripting language around for things like cobbling up a kwik-n-dirty way to extract historical 3rd-party data from weirdly-formatted ancient files and rewriting into a useable form. The old "swiss army chainsaw" PERL was a favorite.
 
Morfydd St. Clair
pollinator
Posts: 210
Location: Hamburg, Germany
45
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Rob Lineberger wrote:I have found very little excuse to use any other language over Python in my 25 years as a software developer.  

It is certainly true that some languages are faster for certain things. For example, if you are processing millions of records, maybe use C over Python.  If you are doing a dedicated Windows desktop application that will never, ever, and you are absolutely sure never ever will be used on another platform, maybe .NET.  If you are doing mainframe programming, COBOL.  

Otherwise, Python's readability, portability, and flexibility trump almost any other concern.  I've done plenty of intensive bioinformatics dataset processing in Python.  PANDAS gives you a wealth of data processing options.  It's excellent for web scripting, dev ops, game development...

I've had many people over the years tell me how other languages are superior for blah-blah-blah because blah-blah-blah and by the end of the conversation I hand them the fully functional program I wrote in Python while they were talking. :)



Meh, my company has 30+ years of application code in C/C++, and 10+ years of Web backend code in Java.  I write supporting code in Python and whatever else I inherit from other teams, but I guarantee new programmers (as opposed to DevOps or whatever) won't get hired here without C or Java.

That's our "excuse to use any other language over Python". ;)  That and the processing of billions of records AND the dedicated Windows/OSX desktop applications.
 
Posts: 63
Location: 6.b.
12
forest garden chicken cooking
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Depends what you want to do with it. I'd suggest MATLAB (very similar to Python) for lots of different engineering fields as it's pretty standard. PYTHON is also a strong choice. C++ is very useful for programming micro-controllers if you have any interest in going the Arduino or Raspberry Pi route.
 
Dc Stewart
Posts: 66
19
  • Likes 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

I'd suggest MATLAB


Good call! I forgot to mention that, in my final years before retirement, the next generation of sensor hardware was to be MATLAB-driven. At the time (2015-2017) MATLAB experts were in high demand -- our own resident expert got poached in mid-project by a "rival" govt department offering a lucrative compensation upgrade.

When it comes to selecting methods, the Elbonians are the best source of inspiration.
dt960223dhc0.gif
[Thumbnail for dt960223dhc0.gif]
 
Rob Lineberger
gardener
Posts: 696
Location: Durham, NC
245
hugelkultur gear urban cooking building writing woodworking
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Morfydd St. Clair wrote:

Meh, my company has 30+ years of application code in C/C++, and 10+ years of Web backend code in Java.  I write supporting code in Python and whatever else I inherit from other teams, but I guarantee new programmers (as opposed to DevOps or whatever) won't get hired here without C or Java.

That's our "excuse to use any other language over Python". ;)  That and the processing of billions of records AND the dedicated Windows/OSX desktop applications.



Hey Morfydd, here is the fully functional program I wrote in Python while you were talking.  :)
 
gardener
Posts: 493
Location: Ontario - Gardening in zone 3b, 4b, or 6b, depending on the day
291
dog foraging trees tiny house books bike bee
  • Likes 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I use python. Free, open source, good online help documentation and, more importantly, what a program i use for work is written to use for automating tasks.  Matlab is awesome for engineering and science but not exactly a versatile langauge through it teaches you lots of the skills. Unfortunately the licence is bloody expensive, but there is a knock off open source version I believe. R is what lots of statistics and graphing stuff in journal papers is done with.

Honestly, unpopular opinion - any language he enjoys if he isnt being paid to do it. I think programming is kinda like reading. Once you can read in English, you can pick up reading in French or Italian easily enough because you know how letters and punctuation works and just need to lean a few different rules. My university taught introductory programming with a useless unheard of language. Useless in real life, BUT we programmed robots in class and had a blast, and the fun of it made me more inclined to learn more. We also did Matlab, and some python, and something else that I forget now...  I don't program much recently - but I have enough background to bash my way inelegantly through small tasks in other languages, and know what to google/how to think when i encounter one.

I find a basic knowledge of SQL queries useful too.
 
pollinator
Posts: 132
Location: Rocky Mountains, USA
37
homeschooling forest garden building writing woodworking homestead
  • Likes 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
In my opinion, these are the top three options:
* C++ (and variants) is the general standard for native applications.  An excellent choice if the student wants to make a career of programming.
* Python is a good way to get up and going fast.  This is a good choice if the student wants to achieve some goal rather than coding itself.  For example, machine learning/artificial intelligence, or mathematical processing.
* Neither of the above has decent graphical user interface options out of the box.  If the student wants to write pretty, interactive applications, I'd say JavaScript is a more worthwhile option.

That being said (and it pains me to say this because I have a personal place in my heart the first two) JavaScript seems to be the most marketable skill.  Between React or Angular on the ui side and NodeJS on the server, this seems to be the way the major industry players (Amazon, Google Facebook, etc) are headed.
 
Rob Lineberger
gardener
Posts: 696
Location: Durham, NC
245
hugelkultur gear urban cooking building writing woodworking
  • Likes 3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Catie George wrote:

Honestly, unpopular opinion - any language he enjoys if he isnt being paid to do it.



Not unpopular at all!  It's a great point.  Virtually any language will teach you sane design patterns like variables, loops, functions, etc.  

Except for PERL of course.
 
pollinator
Posts: 411
Location: Greybull WY north central WY zone 4 bordering on 3
82
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
That can be very much application specific.  Say he wants to build robots or control systems or 3D printer etc.  Each area has most of its code in specific languages.  So if he is looking at any of these I would suggest studying up on the primary languages that are used by what he wants to do.  The same thing applies if he wants to do apps or program development.  You will typically have a wider range of options but in the end what he wants to do will eventually rule.

Learning style matters too.  C++ is overwhelming for most people to learn on their own for example.  Some people thrive on that kind of challenge.  Personally for the more average student I would choose a language that can start out in an interpreted environment and move to a compiled environment at a later date.  There is typically less set up needed to get up and running in interpreted languages and it makes getting started easier.

Love Khan.  They are a great way to learn.  A bit slow for an adult in a hurry but good place for kids to learn.  The only problem I ever had with them was a decade ago when my slow internet would not let me work fast enough on grading other peoples work to suit the system and since I was "refusing"(getting timeout errors) to grade the work it wouldn't let me continue.  All because I was super rural and my internet service was poor.  If he is having trouble find some sort of online geeks group for help.  The online communities are typically amazingly helpful.
 
Morfydd St. Clair
pollinator
Posts: 210
Location: Hamburg, Germany
45
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Rob Lineberger wrote:

Morfydd St. Clair wrote:

Meh, my company has 30+ years of application code in C/C++, and 10+ years of Web backend code in Java.  I write supporting code in Python and whatever else I inherit from other teams, but I guarantee new programmers (as opposed to DevOps or whatever) won't get hired here without C or Java.

That's our "excuse to use any other language over Python". ;)  That and the processing of billions of records AND the dedicated Windows/OSX desktop applications.



Hey Morfydd, here is the fully functional program I wrote in Python while you were talking.  :)



I knew you were going to say that. :)

But my point really was that most programmers for large firms don't choose what language to program in.  It's chosen by management for good (millions of man-hours-worth of working, well-tested legacy code!) or terrible (my 12-year-old kid (or worse, the new MBA consultant) says all the cool startups are using this!) reasons.  Know one or more of the big 3, which we've all kind of agreed is Java, C variants, and Python, or the good suggestion of Javascript, and you'll always have a job.  Learn all the wacky other languages after that if you want a specific job.
 
Posts: 101
Location: California Zone 10b / Wyoming Zone 3b
6
building woodworking homestead
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I have a computer science degree, worked in consulting for years and now work at a major tech company as a Data Science manager.  Here is the order I learned: C, Java, Assembler, Basic, SQL (not really a programming language), C#

If I just wanted to learn a language that would give me job prospects and versatility I would do Python. It has huge amounts of flexibility and you can work In wide variety of applications and fields.  Python and R are also the core of all data science right now and if I was going to learn another language it would be Python.

If you just want to know a little programming to supplement another degree Basic is the place to start.  I have seen massive investment houses run on Basic code built into excel and the modern Microsoft version of basic is essentially an object oriented language that covers a lot of the concepts more advanced languages use.

If your into math to want to do really graphic intensive work then c -> c++ is not a bad place to start but it’s is fairly targeted.

Knowledge of Assembler makes better programmers but it has very little use in the market outside of compiler design.  It’s my favorite language and one of the most fun to learn (IMO) but really not the place to start.

I would stay away from Java.  Limited use and bit harder to move to other languages.
 
Willie Smits understands 40 languages. This tiny ad knows only one:
the permaculture bootcamp in winter
https://permies.com/t/149839/permaculture-projects/permaculture-bootcamp-winter
reply
    Bookmark Topic Watch Topic
  • New Topic