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 StatesPosts: 382 |
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 KingdomPosts: 3839 |
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 KingdomPosts: 227 |
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 StatesPosts: 3013 |
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: CanadaPosts: 315 |
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 StatesPosts: 1421 |
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 RepublicPosts: 532 |
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 KingdomPosts: 1985 |
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 StatesPosts: 705 |
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 StatesPosts: 39 |
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 StatesPosts: 261 |
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 StatesPosts: 261 |
Which Defense contractor are you with? I'm an LM'er... |
||||
Chopperp Guru Joined: 03/01/2018 Location: AustraliaPosts: 1032 |
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 StatesPosts: 769 |
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 StatesPosts: 705 |
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 StatesPosts: 382 |
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 KingdomPosts: 8578 |
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: CanadaPosts: 444 |
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: FrancePosts: 20 |
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 KingdomPosts: 3655 |
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 |