TriLife
Posts: 2
Joined: Mon Mar 27, 2017 3:59 pm

So Many Languages, so little Time

Tue Apr 18, 2017 9:42 am

Greetings;

I'm a newly novice programmer (actually used to make a living off Assembler and Fortran, 30+ years ago) and am somewhat overwhelmed by all the languages one seems to have to learn to enter the field of the Internet of Things.

My interest is mostly personal (building a dream home and like automation), so I signed up for a Udacity Beginner's Android class, where I learned XML and Java (with Android Studio).

Then I took an intro to IoT from Coursera and learned some C++ (Arduino) and Python (RPi).

Now, as I am working on controlling things via HTTP (and ultimately Android based phones and tablets), it seems I keep running into PHP (through Apache). And, since Z-Wave plus will likely be my comms protocol of choice, C++ will reappear.

Now, before I use up any more of my rather few and precious brain cells, would anyone like to venture an opinion on how to best navigate this maze?

Specifically, given Android phone/tablet GUI apps, Raspberry hardware (for now) and Z-Wave (ultimately) AND an overwhelming need for on-line tutorials until I can stand on my own feet:

- what languages will I need to master at a minimum ? (seems I'm stuck with XML/Java for Android, but for Rpi/Z-Wave?)
- given the choices above, what libraries (instead of Apache, to avoid PHP) should I be looking for?
- any interesting sites, which can help fledgling re-beginners like me?
- what IDEs to use?
-any other pearls of wisdom...

Thanks a bunch in advance...

User avatar
KLL
Posts: 1453
Joined: Wed Jan 09, 2013 3:05 pm
Location: thailand
Contact: Website

Re: So Many Languages, so little Time

Tue Apr 18, 2017 10:36 am

hi TriLife,
60++ i feel with you,
recently i was told MEAN stack is the FUTURE and a MUST KNOW,
well i took several steps into node.js ... and it is just not compatible with my ( differently wired ) brain.
ok, there will be a future without us, no problem.
i only know i feel good with python,
first with making desktop programs
and now with making web server / sites using python flask ..

IDE? while for pure python IDLE2 or 3 is helping for errors,
but now i use geany editor for python flask files python, html templates, SVGs..
because there i ( can ) have ( all ) related files open for edit while browser / werkzeug
helps with problems.

User avatar
kusti8
Posts: 3439
Joined: Sat Dec 21, 2013 5:29 pm
Location: USA

Re: So Many Languages, so little Time

Tue Apr 18, 2017 11:13 am

Python is a very good language and I use it for all of my projects just because it has a certain elegance to it that I use quite a lot. You can easily make http servers in Python and its pretty popular. I suspect there's already a lot of resources for what you want to do it python. And it can be used in many different applications. I myself am trying to teach myself C++, but I haven't had much motivation because there isn't a use for me for it right now.
There are 10 types of people: those who understand binary and those who don't.

mfa298
Posts: 1387
Joined: Tue Apr 22, 2014 11:18 am

Re: So Many Languages, so little Time

Tue Apr 18, 2017 1:26 pm

Quite often a language can do more than one thing so there might not be a need for Python + PHP + C++ + Java etc.

For instance, it's quite possible to use Python instead of PHP for the backend of a web application. One way of doing this is Flask (note the K - don't get confused with Flash which is a different thing). There's a guide to Python with flask on the main raspberry Pi site.

I also wouldn't be surprised if it's possible to use the Z-Wave stuff from Python on the Pi end.

On the Arduino (ATMega) side of things there's really only a simplified version of C++ if using the Arduino libraries or C if going for more standard ATMega/AVR code.

For designing a useful web interface you might also want to look at Bootstrap which provides a set of CSS and JS libraries that help produce good looking sites quickly.

Some alternatives to Python on the Pi are Node.JS and Ruby, both of which can interface with hardware on the GPIO and can provide a web application server. Python probably has be best support from the Raspberry Pi community although my personal preference is Ruby.

User avatar
Gavinmc42
Posts: 3918
Joined: Wed Aug 28, 2013 3:31 am

Re: So Many Languages, so little Time

Tue Apr 18, 2017 11:32 pm

Before Pi there was C and my world was happy.

After Pi, it was Python, C++, Grep, Sed, Bash, Ash, Awk, Lua, Luajit, Go, Mathematica, Octave, IPython, R, Rust, Micropython, JS, Node, CSS, HTML5, PHP, CGI, PERL.... GCC, Make, Buildroot, Agile, Extreme, Pair, Git , Jenkins, Docker........

My world was full of Babel.

Then I found Ultibo and from the ashes arises Lazarus and Pascal and my world is calm again.
I'm dancing on Rainbows.
Raspberries are not Apples or Oranges

i486
Posts: 172
Joined: Sun Aug 28, 2016 3:41 pm
Location: BG

Re: So Many Languages, so little Time

Wed Apr 19, 2017 2:09 pm

C is the best :)

User avatar
Gavinmc42
Posts: 3918
Joined: Wed Aug 28, 2013 3:31 am

Re: So Many Languages, so little Time

Thu Apr 20, 2017 3:26 am

C is the best :)
Flame on
C/Python for multicore, arrays, AI.ML,CV......? You need extra stuff, numpy etc
Free Pascal has native support for multicore, arrays... and compiles faster :P
Flame off
I'm dancing on Rainbows.
Raspberries are not Apples or Oranges

User avatar
r3d4
Posts: 967
Joined: Sat Jul 30, 2011 8:21 am
Location: ./

Re: So Many Languages, so little Time

Thu Apr 20, 2017 7:19 am

wrt lang / time
site `Learn X in Y minutes` might be of interest
---> https://learnxinyminutes.com
learnxinyminutes.com wrote:Take a whirlwind tour of your next favorite language.

YCN-
Posts: 246
Joined: Fri Jun 10, 2016 3:18 pm

Re: So Many Languages, so little Time

Thu Apr 20, 2017 7:32 am

Hi,

Honestly I handle almost every things knowing C. For all web things a bit of javascript and particulary node.js, for android just a bit of java. I once had to do an android application, and I used something called Evothings https://evothings.com/ which is wonderfull and dedicated to IOT application + IDE.
You have a lot of example comming with evothings and you can test them on the go, you compile and send via internet to your mobile phone for "real time testing" if you know what I mean.
I think that for all home automation project to make it flexible and fast enough (and also to have some reliable and usefull knowledge), I'll go for all the sensor side and calculation for C (or C++ if your more comfortable), and a node.js server for the web part, it would handle in a lovely way all request, and for the adroid side evothings IDE.

YCN-

i486
Posts: 172
Joined: Sun Aug 28, 2016 3:41 pm
Location: BG

Re: So Many Languages, so little Time

Thu Apr 20, 2017 7:51 am

Gavinmc42 wrote:C/Python for multicore, arrays, AI.ML,CV......? You need extra stuff, numpy etc
Why you need multicore (with C) for RPi? What special multicore task will implement? For most things, single threaded application is enough - multicore CPU is good for multitasking. It is not necessary to make multithreaded every program - even simple loop writing numbers 1-10000 in a file...

jahboater
Posts: 4769
Joined: Wed Feb 04, 2015 6:38 pm

Re: So Many Languages, so little Time

Thu Apr 20, 2017 8:38 am

Gavinmc42 wrote: C/Python for multicore, arrays, AI.ML,CV......? You need extra stuff, numpy etc
Free Pascal has native support for multicore, arrays... and compiles faster :P
I don't think you know C at all.

C can of course do almost anything you would ever want (even arrays!!!!!!)
Thats why much of the system (Raspbian) and commonly the libraries are actually written in C regardless of the target language. The Python doct. doesn't even try to hide the fact that its just calling C library functions in many cases.

Python is also extremely capable and a great choice for the official language.

User avatar
Gavinmc42
Posts: 3918
Joined: Wed Aug 28, 2013 3:31 am

Re: So Many Languages, so little Time

Thu Apr 20, 2017 9:05 am

Why you need multicore (with C) for RPi.
I am used to single core micros, wanted a language that was easy to learn how to do this newfangled multi core stuff.
After learning so many languages getting my head around Linux and using Pi's, I felt there was no need to persist with C.
Plus dependencies and libraries have caused me a few issues in the past.
Backing up 8GB complete images for Raspbian projects :evil: We had to put in our own server with big HD's.

Debug someones else library code, don't have time for that if I only use it once. Python white space is a pain. Numpy is extra.
The point is to learn to code, not to learn to use someone else's library and/or only use a tiny part of the massive library.
How many wrappers are on wrappers, will the real code please stand up :lol:

I also want to learn computer vision and Neural Networks, Machine Learning etc from the ground up.
A language that can natively handle multi dimensional arrays would be good. Go and Rust seemed logical.

Then I found Ultibo, based on Lazarus/Free Pascal Compiler.
The Laz IDE looked like others I have used for decades in C, not hard to learn to use it.
Pascal was a blast from the past, if I feel nostalgic I can even use the Text based FP IDE :lol:
I can use someones library units or do my own. I end up with a small kernel.bin, nothing else, no added strings.

Ultibo also has Aarch64 and QEMU support, Aarch64 is important because it gives faster NEON/SIMD code.
Faster NEON is good because I don't have to use that VC4 GPU thing Pi's have. Serious head damage figuring out the VC4.

So one tool/language can do what I want to do now and for the next few years.
Getting on in years, only got a few decades left.
Don't really want to master all those other things to run them on Linux which is getting less secure every month.
That's kind of important for the IoT stuff I do. Don't tell me JS is totally secure and Node.js does my head in.

I can use Laz/FPC to make stuff on Windows/Linux/Pi's.
I can use the Ultibo version to make baremetal 64bit multicore/multitasking apps and throw Linux away.
Embedded FPC for Cortex M0-M4 is also possible for a few micros, with more in time.

I might go Rust once Redox OS runs Aarch64 on Pi's :ugeek:
In the meantime I am moving to piCore to get away from that kitchen sink bloat called Raspbian :lol:
No Pascal :o

I'm a hardware guy, not a coder, make hardware quick, make code quick.
I'm dancing on Rainbows.
Raspberries are not Apples or Oranges

mfa298
Posts: 1387
Joined: Tue Apr 22, 2014 11:18 am

Re: So Many Languages, so little Time

Thu Apr 20, 2017 9:23 am

Gavinmc42 wrote: The point is to learn to code, not to learn to use someone else's library and/or only use a tiny part of the massive library.
How many wrappers are on wrappers, will the real code please stand up :lol:
From the software dev side of things I'd argue the other way. Use existing libraries where possible, at least on a full system (like the Pi is). However, do some research first and check that the library actually meets you're requirements. There are often several libraries doing similar things, choose one that best fits your needs, is well documented and is actively worked on - there's plenty of libraries where dev stopped when it was good enough for the authors needs.

On a Microcontroller then that might not apply - but programming microcontrollers is a different beast to programming inside an OS.


Going back to the OP, Whilst C/C++ are very good/powerful languages I'm not sure they're the best fit for a novice. The likes of Python/Ruby/Node.JS (and probably a few others) are likely to be much better, have larger communities willing to help beginners, and generally don't have obtuse ways of failing due to some nuance of the language you don't really understand yet.

i486
Posts: 172
Joined: Sun Aug 28, 2016 3:41 pm
Location: BG

Re: So Many Languages, so little Time

Thu Apr 20, 2017 9:31 am

Gavinmc42 wrote:
No Pascal :o
It is good that Pascal is missing. Pascal is regrettable misunderstanding - no need to learn it from now on.

hippy
Posts: 6093
Joined: Fri Sep 09, 2011 10:34 pm
Location: UK

Re: So Many Languages, so little Time

Thu Apr 20, 2017 10:15 am

i486 wrote:
Gavinmc42 wrote:
No Pascal :o
It is good that Pascal is missing. Pascal is regrettable misunderstanding - no need to learn it from now on.
Though Pascal will be useful if one wants the fairly easy route to Bare Metal on a Pi which Ultibo provides.

I have personally settled on Python for most things I do now. It is not perfect but it is pretty capable and how easy it is to use cross-platform makes up for any dislike. I am hoping that in the future we will see a microPython solution for Bare Metal on a Pi.

User avatar
Gavinmc42
Posts: 3918
Joined: Wed Aug 28, 2013 3:31 am

Re: So Many Languages, so little Time

Thu Apr 20, 2017 11:18 am

Though Pascal will be useful if one wants the fairly easy route to Bare Metal on a Pi which Ultibo provides.
Very easy route, don't even need to know assembler, but you can use it inline natively too :lol:

I started with Python on Pi, easy to use and learn.
Even still use Micropython on piCore (comes standard).
But compiled languages are a bit faster ;)

I know C from 2nd edition K&R, C Lib, ucLib etc.
Tried C++, C# but my brain is not wired OOPs.
so little Time
That would be why a RAD tool/language is useful.
Pay for a little speed loss over C but compiling is much faster.
Faster compile = faster code/compile/test cycles.
Not as bad as the old days of going out for lunch while the compiler crunches C code.
However, do some research first and check that the library actually meets you're requirements
Been there, done that, good way to waste time, library collecting, then checking the docs to figure out how to do simple stuff like a line plot (hint gnuploy.py :lol: )

I am also a little paranoid about what is inside all those big libraries and their dependencies, thousands of files to check :o
It is good that Pascal is missing. Pascal is regrettable misunderstanding - no need to learn it from now on.
Bite your tongue, I'm waiting for Oberon to show on a Pi , real, not demo version:lol:
Pascal is making a comeback, it ran really fast on a I486, even Bill G was annoyed with it's compiler speed.
I'm dancing on Rainbows.
Raspberries are not Apples or Oranges

i486
Posts: 172
Joined: Sun Aug 28, 2016 3:41 pm
Location: BG

Re: So Many Languages, so little Time

Thu Apr 20, 2017 11:55 am

Gavinmc42 wrote:That would be why a RAD tool/language is useful.
Pay for a little speed loss over C but compiling is much faster.
Faster compile = faster code/compile/test cycles.
Not as bad as the old days of going out for lunch while the compiler crunches C code.
RAD tools are not for fast compiler but for fast development. C#/.Net give the "speed" of development, not the speed of compilation.

About Pascal - its syntax is ugly. The other is similar to the same program written in C. But looking on hundreds of BEGIN / END / := / PROCEDURE is stupid. The design of Pascal syntax is to help beginner to "understand" a program from the first day (or to find something understandable).

Ultibo sounds good as idea, but when I read "Pascal" my interest finished.

User avatar
Gavinmc42
Posts: 3918
Joined: Wed Aug 28, 2013 3:31 am

Re: So Many Languages, so little Time

Thu Apr 20, 2017 12:51 pm

RAD tools are not for fast compiler but for fast development
Yep I get that plus fast compiles, saves me time. One language, save time.
The design of Pascal syntax is to help beginner to "understand" a program from the first day
Or when you reread something you coded a year ago ;)
Still looking for that "goto line" equivalent.

Go looks like it is an improvement on the syntax of Pascal, like Rust looks a little like C.
but when I read "Pascal" my interest finished.
Forth does that for me :lol:
I'm dancing on Rainbows.
Raspberries are not Apples or Oranges

User avatar
bensimmo
Posts: 4184
Joined: Sun Dec 28, 2014 3:02 pm
Location: East Yorkshire

Re: So Many Languages, so little Time

Thu Apr 20, 2017 1:53 pm

To the OP, not the language debaters,
Learn Python, a lot can be done with it and the Pi in RaspberryPi is for Python.

Then to navigate what you need, just do your project and do what needs to be done. Search the different ways and stay with the preferred language of the target device.
That way you gain all the work and advice that others have done before.

hippy
Posts: 6093
Joined: Fri Sep 09, 2011 10:34 pm
Location: UK

Re: So Many Languages, so little Time

Thu Apr 20, 2017 5:03 pm

i486 wrote:About Pascal - its syntax is ugly.
I would probably agree with that, but I can think of worse. No language is perfect, and it's often a trade-off of how painful it is to use against what it allows to be done. Sometimes it's necessary to just grit one's teeth, embrace a language with all its flaws for the greater good.

If one really hates a language but are forced to use it then one solution is to invent a version of it which is more appealing and knock-out a lightweight source code converter. An existing macro pre-processor may provide a simpler solution.
i486 wrote:Ultibo sounds good as idea, but when I read "Pascal" my interest finished.
I was more disappointed; ho hum, another language to be learned. Though it was more having to learn how to do things with a more modern Pascal than the User Manual & Report version I learned.

Ultibo still holds my interest but my need for Bare Metal has been on the back burner for a while. They seem to have done a decent enough job and it looks like the best option for me so, if it means some inconvenience to ride on their shoulders, I'm willing to take that. Ugly or not; the end justifies the means!

W. H. Heydt
Posts: 11010
Joined: Fri Mar 09, 2012 7:36 pm
Location: Vallejo, CA (US)

Re: So Many Languages, so little Time

Thu Apr 20, 2017 9:28 pm

Languages? Don't forget... Compass, Autocoder, Mark IV, SNOBOL, DataAnalyzer, Jovial, SPS, ALC...

Pithagoros
Posts: 580
Joined: Wed Nov 12, 2014 8:16 pm

Re: So Many Languages, so little Time

Fri Apr 21, 2017 10:25 am

Being old school I moved onto C from BASIC decades ago, then C++ and those languages are my comfort blanket, when things get tough I go back to what I know. I also like being closer to the hardware and my pointers and ALLOCs allow that somewhat, I'm also happy with a bit of Assembler.

But if I were starting out now? I don't know. Your choices might be different if you are a hobbyist, compared to if your goal was a career.

I've been impressed by Python, particularly the way it handles lists, but for me it still has a toy town feel to it.
I detest Java, though it still might be a useful thing to know if you have the career goal.

For casual stuff I'm using JavaScript, meaning ECMAScript, it seems to have matured from its ropey beginnings.

But when the question of a language to pick comes up, you always get lots of different opinions, I wouldn't assert any one in particular except to say that learning to program, to code, to develop software is not the same as learning a programming language. Get the former right then you will find picking up new languages becomes a trivial thing.

User avatar
Gavinmc42
Posts: 3918
Joined: Wed Aug 28, 2013 3:31 am

Re: So Many Languages, so little Time

Fri Apr 21, 2017 11:42 am

Learn them all, gets easier with each one.
But Python is a good spot to start, if you are having trouble doing what you want with it, then move on.

That is the good thing about Pi's, they run most languages.
That is the bad thing about Pi's, they run most languages :lol:

High level
Even Java/Netbeans and Processing work on a Pi3 now, just a little slow.
Processing runs on Android too.

Low Level
If you want to learn Linux, Shell script with Awk and Sed can do an awful lot.
Most of the world is shell scripted underneath. Add some HTML5, CCS, CGI, dash of JS.
I'm dancing on Rainbows.
Raspberries are not Apples or Oranges

Pithagoros
Posts: 580
Joined: Wed Nov 12, 2014 8:16 pm

Re: So Many Languages, so little Time

Fri Apr 21, 2017 11:59 am

Gavinmc42 wrote:
Low Level
If you want to learn Linux, Shell script with Awk and Sed can do an awful lot.
Most of the world is shell scripted underneath. Add some HTML5, CCS, CGI, dash of JS.
By my understanding of the terms "high level" and "low level" when applied to programming languages I would place the disciplines in your low level list as higher level than your high level list.

User avatar
Gavinmc42
Posts: 3918
Joined: Wed Aug 28, 2013 3:31 am

Re: So Many Languages, so little Time

Fri Apr 21, 2017 12:42 pm

For me high level is IDE's, libraries and RAD coding, 500MB-1GB installs.
Full OS taking 4-8GB etc

Low level meaning, all you have/need is the kernel and busybox, < 20MB.

Skill is in reverse :ugeek:
I'm dancing on Rainbows.
Raspberries are not Apples or Oranges

Return to “General discussion”