Home
JAQForum Ver 20.06
Log In or Join  
Active Topics
Local Time 02:56 26 Apr 2024 Privacy Policy
Jump to

Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.

Forum Index : Microcontroller and PC projects : Programming Languages - Let the Flame Wars Start!

     Page 1 of 4    
Author Message
William Leue
Guru

Joined: 03/07/2020
Location: United States
Posts: 382
Posted: 04:36pm 15 Oct 2020
Copy link to clipboard 
Print this post

I have programmed computers in various flavors of Basic, Fortran, C (K&R and ANSI), C++ (dozens of dialects depending on your compiler), Pascal, Java, Python, LISP, and I forget how many assembly and micro-coding languages.

I don't have any single favorite language and environment, but I do like some better than others. My criteria are, more or less:

1. Expressiveness. How easy is it to express various algorithms in a natural way? I think object-oriented languages generally win here. Probably functional languages like Haskell should be included here, but I have never really cozied up to them, except for LISP, which is, like C, a kind of gussied-up assembler.

2. Ease of Learning and Use. Really huge languages like the late not-lamented PL1 are a pain to learn and a pain to remember. Ditto Ada. BASIC, for all its limitations, is easy to learn and use. C++ suffers from too-bigness (or maybe its just too much Bjarne?) and its ugly necessity to be backwards-compatible with C.

3. Broad Area of Application. This is mainly a function of available runtime libraries. Java wins big here, but Python is coming up fast.

4. Performance. Compiled languages with optimizers win here. It's hard to beat a good C compiler with the optimizer turned up, at least when it doesn't screw up.
But both Java and Python are pretty decent, and their virtual machines don't add much overhead.

5. Availability of Tools. A good IDE with a multi-threaded debugger is essential to write and maintain multi-threaded code.  There are times when I wish MMBasic had a debugger, because writing stuff to a logfile and poring over it is like molasses compared to firing up a debugger. If our firmware had the hooks to allow breakpoints, context saves, and continues, we could probably write the rest of a debugger in BASIC. Oh well.

My faves based on these ideas are currently Java and Python. (Sorry, Peter!) I am liking Python more and more because of typeless variables; these are a time and headache-saver.

Of course, for simple fun, I still love BASIC!

Looking for a good argument :-)

-Bill
 
thwill

Guru

Joined: 16/09/2019
Location: United Kingdom
Posts: 3839
Posted: 04:42pm 15 Oct 2020
Copy link to clipboard 
Print this post

  William Leue said  Looking for a good argument :-)


I can't help you. I agree with everything you said except possibly the comment about the overhead of VMs which is subject to debate and would be an issue if not for the ridiculously overpowered machines we have to run Java and Python on.

Tom
Edited 2020-10-16 02:43 by thwill
Game*Mite, CMM2 Welcome Tape, Creaky old text adventures
 
elk1984

Senior Member

Joined: 11/07/2020
Location: United Kingdom
Posts: 227
Posted: 04:48pm 15 Oct 2020
Copy link to clipboard 
Print this post

  William Leue said  Looking for a good argument :-)


I thought I missed breakpoints and interactive debugging, until I rediscovered the joy of reading my code and working out what it was doing rather than my over-reliance on Shift+F8....

That said, I do miss some IDE capabilities.  Moving quickly between includes and resources in the editor, "projects" and a coherent unit to check in and out.  Oh yeah, source control - I miss that too  

I really miss the advanced text editing capabilities of an IDE.  Renaming variables, refactoring code into Subs / Functions / Includes.

I think those are the single biggest use cases that have be popping the SD card and putting back in the PC.
 
lizby
Guru

Joined: 17/05/2016
Location: United States
Posts: 3013
Posted: 05:01pm 15 Oct 2020
Copy link to clipboard 
Print this post

  William Leue said  If our firmware had the hooks to allow breakpoints, context saves, and continues, we could probably write the rest of a debugger in BASIC. Oh well.

I'm not sure that a debugger needs anything more than a hook to call the BASIC debugger code with every line when a user-program flag is set (excluding the BASIC debugger's own code), access to the current line number (and thus to the ability to reconstruct the text of the line), and access to the variables.

This would allow breakpoints and variable watches, single-stepping, and the like--most of what might be desired. I may be wrong, but I think very little in the way of a hook is needed.
Edited 2020-10-16 03:04 by lizby
PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on fruitoftheshed
 
PeteCotton

Guru

Joined: 13/08/2020
Location: Canada
Posts: 315
Posted: 05:13pm 15 Oct 2020
Copy link to clipboard 
Print this post

I've used tonnes of languages over the decades, and the only two that I absolutely hated were LISP and COBOL. LISP because I never truely understood it and COBOL because you had to write "War & Peace" every time you wanted to do anything simple (and I had to do it for my job for a year).

I think for most other languages it comes down to the development environment. As has been mentioned, breakpoints, step through code etc. are all massive time savers. Being able to hive large parts of code off in to seperate files, again - a god send. Also being able to collapse subroutines that are not being used. And of course built in source control. All of these things tend to be a function of the dev environment, not the language.

I program in C (embedded components) and C# (Windows, iOS, Android etc.) mainly, and love both of those languages. I would never attempt anything I produce professionally in BASIC, for a whole host of reasons (classes, data structures, speed, connectivity etc.), but I do enjoy using BASIC for just mucking around. I guess it's the same way that you might own a Ferrari, but you wouldn't use it for off-roading.
 
CircuitGizmos

Guru

Joined: 08/09/2011
Location: United States
Posts: 1421
Posted: 05:21pm 15 Oct 2020
Copy link to clipboard 
Print this post

  elk1984 said  
That said, I do miss some IDE capabilities.  Moving quickly between includes and resources in the editor


I wish that MMEdit had a Multiple Document Interface. Each open document would save its filename in the selected directory on the CMM2 SD card (not TEMP.BAS). Includes would be a lot easier to develop/test.

Even if TEMP.BAS could be replaced with the target file name and multiple MMEdits open... Or does it do that? I don't think so, but sometimes I miss good features...
Micromites and Maximites! - Beginning Maximite
 
jirsoft

Guru

Joined: 18/09/2020
Location: Czech Republic
Posts: 532
Posted: 08:00pm 15 Oct 2020
Copy link to clipboard 
Print this post

I have programmed in most of the languages like Bill and I have tried few others for at least some projects (Prolog, Forth, Modula...) and for me the points are a little bit differrent (comments to Bill's list):

1. it doesn't matter so much, more important is for me how easy is use the language on which system: on C64, Atari ST and Acorn Archimedes was easiest BASIC+assembler, on some microcontroller C, on rPI C or Python. I tried for example Pascal or C already on C64, but the discomfort on this system was too big.

2. you will find some similarity everywhere, some algorithm are easier expressed in one, some in other language, but here I can't find big issue

3. I like (when's possible) to write apps without to use (mostly big) libraries. They are nice, but to have 1kB own code + 2MB library because of one function?

4. Python is nice, but I think BASIC (modern one, like MM) + assembler is comparable

5. IDE is mostly needed (for me) on much more complicated systems with windows, menus etc. On (almost) bare metal is good editor with some support for debugging (hello TRACE) enough.

Right now I miss inline assembler on CMM2, but I hope CSUBs with external asm will help until at least simple assembler in BASIC will be written...

I have at home very heterogeneous network environment (some ESPs, rPIs, Mac, Phones...) because of sensors and controls and mostly UDP Multicast communication, I develop mostly in Xojo and C, with a little bit of Python. But my "new" C64 and C128(D) need to be programmed anyway in assembler or BASIC...
Jiri
Napoleon Commander and SimplEd for CMM2 (GitHub),  CMM2.fun
 
CaptainBoing

Guru

Joined: 07/09/2016
Location: United Kingdom
Posts: 1985
Posted: 08:13pm 15 Oct 2020
Copy link to clipboard 
Print this post

  PeteCotton said  ... I absolutely hated ... COBOL ... because you had to write "War & Peace" every time you wanted to do anything simple.

I hear that... never got involved with COBOL but another language that is seldom mentioned these days was ATLAS. It was quite "big" in the aerospace/military arena here in the UK. I used a flavour as an apprentice for the last 3 of 4 years at Thorn EMI. EMIPAL (EMI's Programmable Atlas Language) was so wordy, just simple things required sentences to do:

A=B+C was rendered as ADD B TO C AND SAVE RESULT AS A

specialized peripherals on test equipment (principally "ADEPT") gave extensions like

CONNECT DC3 TO SK4A:17
CONNECT DVM TO SK4A:17
MEASURE VOLTAGE AND SAVE RESULT AS VCC

dead easy to follow but horrifically slow to type in code.
 
hitsware2

Guru

Joined: 03/08/2019
Location: United States
Posts: 705
Posted: 08:32pm 15 Oct 2020
Copy link to clipboard 
Print this post

In my ( rather limited ) world ,
the big thing now is Python vs Basic .
I do not understand why there is not
a ' development board '
( PyBoard , MicroBit , Teensy , et. al. )
with Basic ?
I have found that Python is not completely
unrelated to Basic .... But again ...
Why no BasBoard ?
my site
 
JimDrew
Newbie

Joined: 07/10/2020
Location: United States
Posts: 39
Posted: 08:51pm 15 Oct 2020
Copy link to clipboard 
Print this post

I have learned BASIC, Forth, COBOL, FORTRAN, Pascal, C, and a few other obscure languages (APL, Turtle, etc.)

For the commercial products I have developed (more than 400 total since the 80's) I have used straight assembly language.  For me, it just makes the most sense when I read it - no matter what CPU type it is.  I have done small projects with just a few dozen lines of code, and I have done some big projects - two were 1.6 million lines of code, and one was 1.7 million lines of code.  Even today, where I develop guidance control systems (flight/weapons), I still use assembly code for 100% of everything, but that is largely due to being able to side step regulations dealing with compiler certifications, and also to adhere to strict timing requirements.

My brain is just wired low-level, likely because we had to start out that way in the 70's.  The only real advance is IDEs that have hardware level stepping capabilities.  It's nice to be able to be "inside" of the chip while it is running in real time to see what is really going on.  This is how I locate silicon bugs and develop methods to work around them.

If there was a native assembler built for the CMM2, I would be all over this.  :)
Edited 2020-10-16 06:51 by JimDrew
 
mkopack73
Senior Member

Joined: 03/07/2020
Location: United States
Posts: 261
Posted: 09:41pm 15 Oct 2020
Copy link to clipboard 
Print this post

I've likewise used a large number over my years, especially if you include all the various dialects of each (like the 12 different versions of BASIC or various C implementations, etc.)


My 3 preferred are:

Java - extensive built in library to do just about anything. Not good for low level stuff though, but pretty universal to find on any system. Can get a lot done in a relatively short amount of time. Good OO. Good safety.

C++ - Not my first choice for similar reasons as William stated (just seems to get more bloated and complicated every version! Turning into a real mess to understand.) But produces fast code and pretty much a requirement for doing robotics stuff (ROS).

Python - Almost as extensive a standard library as Java, simple to jump in and learn and use. Very powerful for performing operations on lists and such. BUT WHO THE F THOUGHT WHITESPACE WAS A GOOD WAY OF DENOTING CODE BLOCKS?!?!? That person should be SHOT. I'm sorry but a simple set of { } would have eliminated hundreds of thousands of cumulative man hours spent debugging python issues caused by tabs vs. spaces and 3 spaces vs 4 and such... ARGH!!!



Some of the more funky notable mentions:

SmallTalk-80 - touched this in college. Precursor to Java. Really wild for it's time. Totally PURE OO. Really enjoyed learning it a bit.

Scheme/Lisp - Ok, it's weird. It's a totally different mindset to programming, but it works once you wrap your brain around it and it starts to seem really elegant for some types of problems.

Lua - relative newcomer. Interesting data structures, useful and used in a lot of games to write AI and such. but not as popular, not as great tools available for it, limited utility.

Prolog - this one was weird in that you wrote "rules"... Very different way of representing things.



Bottom of the barrel:

APL - had to deal with this one in grad school programming languages class. OMG I totally never got it. Made NO sense to me at all.

COBOL - got exposed to this in a 2-lecture session during a programming languages class in undergrad. They had a grad student teach those 2 lessons. 30 minutes into the first of the 2 lectures I was totally confused by how anyone could consider that a PROGRAMMING language, raised my hand, asked "Are we going to have to write a program in this or be tested on it?"  "No"... "See ya!!!" Got up and walked out, and about 1/2 the class followed me... I REFUSE to even look at that garbage...I don't care HOW much they're willing to pay me, it's not enough!
Edited 2020-10-16 07:46 by mkopack73
 
mkopack73
Senior Member

Joined: 03/07/2020
Location: United States
Posts: 261
Posted: 09:48pm 15 Oct 2020
Copy link to clipboard 
Print this post

  JimDrew said  Even today, where I develop guidance control systems (flight/weapons),


Which Defense contractor are you with? I'm an LM'er...
 
Chopperp

Guru

Joined: 03/01/2018
Location: Australia
Posts: 1032
Posted: 10:05pm 15 Oct 2020
Copy link to clipboard 
Print this post

  CircuitGizmos said  
I wish that MMEdit had a Multiple Document Interface. Each open document would save its filename in the selected directory on the CMM2 SD card (not TEMP.BAS). Includes would be a lot easier to develop/test.

Even if TEMP.BAS could be replaced with the target file name and multiple MMEdits open... Or does it do that? I don't think so, but sometimes I miss good features...


Not sure if this is what you want but you can easily transfer files, keeping the files names, to the SD card from MMEdit using MM File (Master). (Icon to the left of MM Chat)
ChopperP
 
Paul_L
Guru

Joined: 03/03/2016
Location: United States
Posts: 769
Posted: 01:26am 16 Oct 2020
Copy link to clipboard 
Print this post

I'm older than dirt.

The most fun I ever had was writing the far jump resolutions for the Cornell assembler for the 1401. How far can you jump in a 4K core?

Making glider aircraft using Hollerith cards was fun too. We even experimented with different patterns of punched holes to disrupt laminar flow.

FORTRAN (not FORTRAN II, just plain FORTRAN) was fun too but it was only available for the 704 initially.

I even liked hand sorting Hollerith card decks.

I'm not just older than dirt, I'm crazy too.

Paul in NY
Edited 2020-10-16 11:28 by Paul_L
 
hitsware2

Guru

Joined: 03/08/2019
Location: United States
Posts: 705
Posted: 03:44am 16 Oct 2020
Copy link to clipboard 
Print this post

I ' m so old , I remember when computers
did not yet have ' languages ' .....
I wish I would have had the interest then
that I have now .
my site
 
William Leue
Guru

Joined: 03/07/2020
Location: United States
Posts: 382
Posted: 11:17am 16 Oct 2020
Copy link to clipboard 
Print this post

It's great seeing everyone's experiences!

In my initial post I forgot several languages I worked with over the years: they include PHP ("C with dollar $ign$") HTML, SGML, XML (Dear God, way too much XML), LUA (writing World of Warcraft addons, none very successful).

Some of the software engineering tools require lots of XML to configure; they include ANT and similar integration aids. Anybody remember the insanity of trying to produce complicated Make files in *NIX? For that matter, *NIX shell programming was also a black art, especially with the original Bourne Shell.

Oh well, enough gasbagging.

-Bill
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 8578
Posted: 11:31am 16 Oct 2020
Copy link to clipboard 
Print this post

In order:

At work, early days:
Fortran
Basic
6502 assembler
Algol68
Coral66
PDP11 assembler
6809 assembler
Pascal
VBA

Long gap in management:

Post retirement:
PIC16 assembler
Ruby on Rails
C
ARM assembler
 
LeoNicolas

Guru

Joined: 07/10/2020
Location: Canada
Posts: 444
Posted: 04:12pm 16 Oct 2020
Copy link to clipboard 
Print this post

I started my programming adventures when I was 14 years old with an MSX computer...
These are the languages I've used (in order):

MSX Basic
Z80 assembler
Clipper
Turbo Pascal
C
Delphi
VB
Java
C#
Javascript / NodeJS
Python
Dart
I'm studying Rust
CMM2 Basic  

 
ChrisJournoud
Newbie

Joined: 12/10/2020
Location: France
Posts: 20
Posted: 06:42pm 16 Oct 2020
Copy link to clipboard 
Print this post

  hitsware2 said  In my ( rather limited ) world ,
the big thing now is Python vs Basic .
I do not understand why there is not
a ' development board '
( PyBoard , MicroBit , Teensy , et. al. )
with Basic ?
I have found that Python is not completely
unrelated to Basic .... But again ...
Why no BasBoard ?


You are right. It could be https://fr.aliexpress.com/item/33014937190.html?spm=a2g0o.cart.0.0.34573c00CM396G&mp=1
 
JohnS
Guru

Joined: 18/11/2011
Location: United Kingdom
Posts: 3655
Posted: 06:46pm 16 Oct 2020
Copy link to clipboard 
Print this post

In approx order:

FORTRAN IV
ICL 1900 assembler (PLAN)
COBOL (yuck)
IBM 360 assembler
BASIC (homebrew multi-user on a PDP-11)
PDP-11 assembler (MACRO-11)
Algol-60
Algol-68
LISP
Algol W
RPG 3 (yuck)
C
8080 assembler
BASIC-PLUS & -PLUS-2
Pascal
UNIX/Linux tools (awk, LaTeX, lex, m4, make, perl, sh, yacc, ...)
VAX-11 assembler
8086 assembler (16- & 32-bit)
PL/M-80 & PL/M-86
MS BASIC
68000 assembler
BCPL
Smalltalk
PRO
CUTLASS
Clipper 5
C++
Visual Objects
Java
Python
C#
ARM assembler
lua
R
(do we count command line tools such as George 3, sh, csh, bash, VMS, ...
or programmable editors like TECO?)

John
 
     Page 1 of 4    
Print this page
© JAQ Software 2024