Want advice on learning programing language for electronics C or JAVA or Python - Page 1
Forum section: electronics / general

author: Sarvesaa
author_rank: Contributor
timestamp: August 02, 2022, 02:28:17 pm
content: Dear friends,I am going to join college to become an EE engineer. I have few weeks of time, so I am interested in learning a programing language.I know some basic concepts of JAVA from my schooling. Apart from that I want to learn many.I want your advices in choosing a language whether C or JAVA or Python, which will be helpful in programing microcontrollers.Thank youWith RegardsSarvesaa Jagan

author: tggzzz
author_rank: Super Contributor
timestamp: August 02, 2022, 02:50:13 pm
content: Quote from: Sarvesaa on August 02, 2022, 02:28:17 pmFor embedded projects, C is the traditional choice - but under some circumstances Python is becoming an option.You will not learn C (or another language) in a few weeks.It is worth learning the basic principles/concepts of many languages, so you know which oneswon'tbe appropriate for a given task, and which ones are more-or-less alike.

author: Miyuki
author_rank: Frequent Contributor
timestamp: August 02, 2022, 02:59:06 pm
content: Almost all programming languages have common ancestry and are more like a dialect than different languagesProgramming concepts, algorithmization, and other stuff are what matters and it is common for most of today's languagesAnd plain C is a good starting point to learn and works everywhere

author: radar_macgyver
author_rank: Frequent Contributor
timestamp: August 02, 2022, 03:00:24 pm
content: Stick with C for embedded stuff. If you've used Java, C syntax will look familiar, but you will have to 'unlearn' some stuff like how C deals with strings.One of the better Youtube channels on programming in general (with a focus on C) is from Jacob Sorber:https://www.youtube.com/c/JacobSorberHe's got some playlists made up, including one for C beginners. I would also suggest actually typing in the code (don't download it), running it, then start modifying it to do other things. Just watching the videos will not get you far.

author: Ian.M
author_rank: Super Contributor
timestamp: August 02, 2022, 03:13:51 pm
content: Learn C, as ~95% of microcontroller based embedded systems are programmed in C or a C like subset of C++, but do try to pick up some Python as well as you often need something to script communication with your embedded gadget, running on a host with a full OS.Even if all you do is get yourself an Arduino starter kit and try writing your own code for it (Arduino uses a C-like subset of GCC C++), you'll be a large step ahead of fellow students who haven't got any C programming experience.

author: tom66
author_rank: Super Contributor
timestamp: August 02, 2022, 03:45:38 pm
content: Avoid Java at all costs and you will be much happier in your life (and so will anyone who deals with your code.)Python is a great starter language. C has quite the brick wall to it in terms of getting complex things working like data management. So I recommend you start with Python to grasp the concepts of programming, then graduate to C on an Arduino or some similar platform.

author: rstofer
author_rank: Super Contributor
timestamp: August 02, 2022, 04:51:45 pm
content: What do you expect to use general purpose programming for during your time in college? I would suggest learning Fortran because it is more useful for math kinds of things - but it won't be a popular recommendation and it still might not address the need to draw charts and graphs.Next I would recommend Python because there are libraries for just about everything you can imagine. C, although the most important, would be a distant 3rd place. You will have to learn it anyway but the question is what comes first.I suspect you will want to use a programming language to augment or simulate your course work. I did it with Fortran back in '70 and '71 and used the attached plotter to get charts and graphs. Charts and graphs on a step-by-step plotter are a lot of work.Today, I would suggest getting very close to MATLAB. At some universities, the program is free to students registered in certain programs and EE would certainly be one of them. If you can't get MATLAB for free and you don't want to pay for the Home license, you can use GNU Octave for all of the math/plot work you will ever want to do. I use both regularly even though I retired nearly 19 years ago. At the university my grandson attended, there is a required MATLAB course for incoming freshman and the program will be used extensively throughout any STEM majors. All of the math is done on MATLAB! Well, except for some elementary math classes where pencil and paper are still required.I really believe you should focus on MATLAB/Octave, particularly those examples that result in plots.Get a MATLAB book and get started. Amazon also has books on GNU Octave (and a lot on MATLAB) so pick one and get started.Here is a little matrix algebra problem that you WILL run into, in some form, in one of your early math classes:Code:% A football stadium has a capacity of 100,000 attendees% Ticket prices:% Student = $25% Alumni = $40% Faculty = $60% Public = $70% Veterans = $32% Guests = $ 0% A full capacity game netted $4,987,000% Let S = number of students, A = number of alumni, F = number of faculty% P = number of public, V = number of veterans, G = number of guests% S A F P V G = valueM = [ 1 1 1 1 1 1 100000; ... % total number of attendees25 40 60 70 32 0 4897000; ... % total revenue0 1 -1 0 0 0 11000; ... % 11000 more alumni than faculty0 1 0 1 -10 0 0; ... % public + alumni = 10 * veterans-1 1 1 0 0 0 0; ... % alumni + faculty = students1 0 1 0 -4 -4 0]; % faculty + students = 4 (guests + veterans)A = M(:,1:6); % extract 6x6 matrixB = M(:,7); % extract value column vectorP = M(2,1:6); % ticket price by attendee typeR = inv(A)*B; % compute number of attendees by typeT = sum(R); % check total attendees = 100,000 CHECKU = P*R; % total revenue = 4,897,000 CHECKV = R'.*P; % revenue by attendee type - transpose R from 6x1 to 1x6% then do element by element multiplication%% fancy output, all previous default output semicoloned%label = {'Students' 'Alumni' 'Faculty' 'Public' 'Veterans' 'Guests'};for i = 1:6printf('%-8s%7d @ %2d = %7d\n',label{i},...round(R(i)),...M(2,i),...round(V(i)))endprintf('\nTotals %6d %8d\n',round(T), round(U))% Results edited back into source code% Students 25000 @ 25 = 625000% Alumni 18000 @ 40 = 720000% Faculty 7000 @ 60 = 420000% Public 42000 @ 70 = 2940000% Veterans 6000 @ 32 = 192000% Guests 2000 @ 0 = 0% Totals 100000 4897000We know the total revenue and the total headcount and some relations between various categories. We put it all in a matrix and do some magic matrix inversion, transpose and multiply to get the number of attendees in each category. This is a very elementary intro to matrix algebra but the concept will show up all over the place when you get to Kirchhoff's equations and nodal/mesh analysis.Note how we specify 11,000 more alumni than faculty. Number of alumni minus number of faculty = 11,000. This is where the magic happens, creating the matrix with all the conditions.Look at how easy it is to strip a column off the matrix and call it a new vector. MATLAB -> MATrix LABratoryHere's an RC charge and discharge plot:Code:V0 = 1; % assume a supply voltageR = 10000; %10k OhmsC = 0.1*10^-6; % 0.1 ufdTau = R*C;t = linspace(0,8*Tau);Vchg = V0 * (1 - exp((-t/Tau)));Vdis = V0 * (exp((-t/Tau)));plot(t, Vchg)grid minorgrid onhold onplot(t,Vdis)ylabel("Voltage")xlabel("Time - seconds")%there is a known bug in 'legend', the [h,~] is a kludge to work around it[h,~]=legend("Charge Voltage","Discharge Voltage");figure(gcf) % or shg command - pull plot to topfor Tau = 0:6pct_charge = V0 * (1 - exp((-Tau))); %percent charget1 = -log((1-pct_charge)); % my versiont2 = log(1/(1-pct_charge));% book versionfprintf("%% Tau = %.0f Percent Charge = %5.2f,\t t1 = %7.3f, t2 = %7.3f\n", ...Tau, 100*pct_charge,t1,t2)end% output% Tau = 0 Percent Charge = 0.00,t1 = -0.000, t2 = 0.000% Tau = 1 Percent Charge = 63.21,t1 = 1.000, t2 = 1.000% Tau = 2 Percent Charge = 86.47,t1 = 2.000, t2 = 2.000% Tau = 3 Percent Charge = 95.02,t1 = 3.000, t2 = 3.000% Tau = 4 Percent Charge = 98.17,t1 = 4.000, t2 = 4.000% Tau = 5 Percent Charge = 99.33,t1 = 5.000, t2 = 5.000% Tau = 6 Percent Charge = 99.75,t1 = 6.000, t2 = 6.000Both of these examples run in the free version of Octave as well as under MATLABHint: Octave will accept # as starting a comment, MATLAB won't. Both will accept % so that is what I use. I never know which program I will be using because MATLAB is only licensed on one machine but Octave runs everywhere. MATLAB has many add-on packages that Octave simply doesn't have - Simulink being very important later on. Others like the EE package are also important and if you can swing MATLAB and the extra cost packages, do it. Otherwise, Octave will have to do.Don't forget Desmos.com for graphing and Symbolab.com for solving.

author: tggzzz
author_rank: Super Contributor
timestamp: August 02, 2022, 05:07:26 pm
content: Quote from: Miyuki on August 02, 2022, 02:59:06 pmI presume you mean the languages derived from COBOL, Fortran, Algol, Basic, APL, LISP, Forth and Prolog.You should also include statistical languages (e.g. R) and the various FSM specification languages (e.g. Harel StateCharts).QuoteKnowing whichspecification techniqueto use is essential. It is stupid to try to use FSM specification techniques for a statistical problem, etc.

author: rstofer
author_rank: Super Contributor
timestamp: August 02, 2022, 05:51:52 pm
content: Quote from: tggzzz on August 02, 2022, 05:07:26 pmWith all the emphasis on big data, languages like R are essential. MATLAB also plays in this arena:https://www.mathworks.com/solutions/big-data-matlab.htmlIf it involves numbers, MATLAB is all over it! Excel also has a lot of capability that is seldom used.

author: SiliconWizard
author_rank: Super Contributor
timestamp: August 02, 2022, 06:40:12 pm
content: Both C and Python will be useful for an EE. (I don't like Python much myself, but it's almost impossible to ignore these days especially if you're a young engineer.)Java, not at all.

author: coppice
author_rank: Super Contributor
timestamp: August 02, 2022, 06:49:59 pm
content: Quote from: tggzzz on August 02, 2022, 02:50:13 pmWhat you won't learn quickly is how to program well. If you have years of years of programming behind you, you should be able to get useful in a new language in a week.

author: coppice
author_rank: Super Contributor
timestamp: August 02, 2022, 06:52:17 pm
content: Most university courses teach you python these days. For small embedded systems (e.g. MCUs) C is the main language. For bigger systems a wide diversity of languages are used.

author: rstofer
author_rank: Super Contributor
timestamp: August 02, 2022, 06:56:54 pm
content: A few years ago, our moderator (Simon) posted a Kirchhoff mesh type problem with reactive components which leads immediately to complex numbers. The wxMaxima solution is:Code:-->ratprint : false$fpprintprec : 4$eq1 : 0 = -V1 + Z1*I1 + Z4*(I1-I2) ;eq2 : 0 = Z4*(I2-I1) + Z2*(I2-I4) + Z5*(I2-I3) ;eq3 : 0 = Z5*(I3-I2) + Z3*I3 + V2 ;eq4 : 0 = Z2*(I4-I2) + V3 ;eq5 : VA = V1 - I1*Z1 ;eq6 : VB = VA - V3 ;eq7 : Z1 = 2 ;eq8 : Z2 = -5*%i ;eq9 : Z3 = 4 ;eq10 : Z4 = -5*%i ;eq11 : Z5 = 4*%i ;eq12 : V1 = 120 ;eq13 : V2 = 120*%i ;eq14 : V3 = 14.14*%i + 14.14 ;res : solve([eq1,eq2,eq3,eq4,eq5,eq6,eq7,eq8,eq9,eq10,eq11,eq12,eq13,eq14])$results : expand(float(res))$lngth : length(results)$sorted : sort(results)$print("")$for i:1 thru lngth doprint(sorted)$(eq1)0=(I1-I2)*Z4+I1*Z1-V1(eq2)0=(I2-I3)*Z5+(I2-I1)*Z4+(I2-I4)*Z2(eq3)0=(I3-I2)*Z5+I3*Z3+V2(eq4)0=(I4-I2)*Z2+V3(eq5)VA=V1-I1*Z1(eq6)VB=VA-V3(eq7)Z1=2(eq8)Z2=-5*%i(eq9)Z3=4(eq10)Z4=-5*%i(eq11)Z5=4*%i(eq12)V1=120(eq13)V2=120*%i(eq14)V3=14.14*%i+14.14/* RESULTS */I1=16.81-22.88*%iI2=25.96-40.15*%iI3=18.06-22.1*%iI4=28.79-42.98*%iV1=120.0V2=120.0*%iV3=14.14*%i+14.14VA=45.76*%i+86.38VB=31.62*%i+72.24Z1=2.0Z2=-5.0*%iZ3=4.0Z4=-5.0*%iZ5=4.0*%iMaxima is very popular at CERN and wxMaxima simply adds a GUI IDE. Definitely worth knowing. Amazon has a Kindle book for wxMaxima, also in paperback but the Maxima books seem to be in Spanish.Note how we just create a bunch of equations and then stuff them all into the solve() function. Pretty slick considering the number of complex values.Here is the MATLAB code for the same problem, it needs a little rework before it will run on Octave:Code:format = '%s %6.3f %+6.3fj :: %6.3f@%+6.3f Degrees\n';z1 = 2;z2 = -5j;z3 = 4;z4 = -5j;z5 = 4j;v1 = 120;v2 = 120j;v3 = 14.14 + 14.14j;syms i1 i2 i3 i4eqn1 = -v1 + z1 * i1 + z4 * (i1 - i2) == 0;eqn2 = z4 * (i2 - i1) + z2 * (i2 - i4) + z5 * (i2 - i3) == 0;eqn3 = z5 * (i3 - i2) + z3 * i3 + v2 == 0;eqn4 = z2 * (i4 - i2) + v3 == 0;[A,B] = equationsToMatrix([eqn1,eqn2,eqn3,eqn4],[i1,i2,i3,i4]);X = linsolve(A,B);va = v1 - z1 * X(1);vb = va - v3;rx1 = real(X(1));ix1 = imag(X(1));theta1 = rad2deg(double(angle(X(1))));mag1 = abs(X(1));rx2 = real(X(2));ix2 = imag(X(2));theta2 = rad2deg(double(angle(X(2))));mag2 = abs(X(2));rx3 = real(X(3));ix3 = imag(X(3));theta3 = rad2deg(double(angle(X(3))));mag3 = abs(X(3));rx4 = real(X(4));ix4 = imag(X(4));theta4 = rad2deg(double(angle(X(4))));mag4 = abs(X(4));rxa = real(va);ixa = imag(va);maga = abs(va);thetaa = rad2deg(double(angle(va)));rxb = real(vb);ixb = imag(vb);magb = abs(vb);thetab = rad2deg(double(angle(vb)));fprintf(format,'i1:',rx1,ix1,mag1,theta1, ...'i2:',rx2,ix2,mag2,theta2, ...'i3:',rx3,ix3,mag3,theta3, ...'i4:',rx4,ix4,mag4,theta4, ...'va:',rxa,ixa,maga,thetaa, ...'vb:',rxb,ixb,magb,thetab);And the MATLAB results:Code:>> MeshAnalysisi1: 16.812 -22.879j :: 28.392@-53.691 Degreesi2: 25.964 -40.154j :: 47.817@-57.114 Degreesi3: 18.059 -22.095j :: 28.537@-50.740 Degreesi4: 28.792 -42.982j :: 51.734@-56.184 Degreesva: 86.376 +45.758j :: 97.748@+27.913 Degreesvb: 72.236 +31.618j :: 78.853@+23.639 DegreesThere are a number of languages more immediately applicable to EE than C and almost everything is more applicable than Java.

author: nctnico
author_rank: Super Contributor
timestamp: August 02, 2022, 07:12:25 pm
content: Quote from: coppice on August 02, 2022, 06:49:59 pmI disagree. A programming language is much more than the language itself. You also need to learn how the use the libraries / modules that come with a language in order to use a programming language effectively. This can be a huge learning curve by itself.

author: coppice
author_rank: Super Contributor
timestamp: August 02, 2022, 07:17:29 pm
content: Quote from: nctnico on August 02, 2022, 07:12:25 pmI said you can be useful. Not an expert.

author: emece67
author_rank: Frequent Contributor
timestamp: August 02, 2022, 08:13:07 pm
content: .

author: rstofer
author_rank: Super Contributor
timestamp: August 02, 2022, 10:47:00 pm
content: MicroPython for certain uCs is quite handy. It clearly works well on the Raspberry Pi Pico and Pico W. It is clearly worth the time to learn Python.All of my postings in this thread are oriented toward tools used for learning, not necessarily commercial projects. Those will have a language choice made by an out-of-touch manager and cast in stone regardless of facts.

author: makingdevices
author_rank: Newbie
timestamp: August 03, 2022, 09:49:06 am
content: C is the way to go for embedded systems, there is no discussion there... However, I can relate that uPython and Python itself are quite useful and handy for fast-prototyping and Tasks automation. Indeed, I am starting to see some "internal" projects done in micropython and raspberry pis in both Solar and EV industry... Quite interesting. All in all, it is known that C has a x100 factor over python in speed, so C is the winner when you need to sell to a client a robust/fast product.

author: Sarvesaa
author_rank: Contributor
timestamp: August 03, 2022, 10:37:08 am
content: I have been studying and coding in JAVA from 9th grade to 12th grade as a part of school syllabus.I did many programs that include fundamentals.For exampleScanner classes, Buffered readers, iterations, strings, arrays 2Dimensional 3Dimensional.So I think C and other languages will be easy to learn.

author: Zero999
author_rank: Super Contributor
timestamp: August 03, 2022, 10:49:06 am
content: C is definitely the way to go for microcontrollers. Optimised compilers produce fast and light code and it's good for low level stuff such as accessing memory directly.It's still good to familiarise yourself with assembly. I know it's not as important as it used to be, but it's still a good idea to know what's going on at a lower level.

author: tggzzz
author_rank: Super Contributor
timestamp: August 03, 2022, 11:37:52 am
content: Quote from: Sarvesaa on August 03, 2022, 10:37:08 amRegrettably that is no longer the case. Arguably it hasn't been the case since the early 90s.I presume that by "learn" you mean more than "no compilation errors".The subtle details of what the languagedoes notguarantee are problem for both the beginner and the experienced developer. Evidence:the existence of "language lawyers" that enjoy endlessly debating what a construct means and doesn't meanthat increasing the level of compiler optimisation frequently changes the program's behaviour. When that happens it is defined to be "programmer error", which is the programming equivalent of "blaming the victim"the Linux kernel uses only -O2 optimisation, and -O4 optimisation is frequently forbidden by Torvalds. Make sure you understand why!what you can and can't guarantee depends on which version of the language you are usinguntil recently it was impossible to implement threads as a C library. Think about that. Many professionals didn't believe it, let alone understand it!http://hboehm.info/misc_slides/pldi05_threads.pdfhttp://www.hpl.hp.com/techreports/2004/HPL-2004-209.pdf

author: tggzzz
author_rank: Super Contributor
timestamp: August 03, 2022, 11:54:13 am
content: Quote from: Zero999 on August 03, 2022, 10:49:06 amSee my previous postBeing able to read assembler is vital for embedded programming:when debuggingwhen figuring out WTF the compiler has donenow

author: Zero999
author_rank: Super Contributor
timestamp: August 03, 2022, 12:31:18 pm
content: Quote from: tggzzz on August 03, 2022, 11:54:13 amWhich post?Did you ever post over onElectro-Tech-Online? There was a moderator who would insist every beginner to microcontrollers should start with PICs and use assembly, not C, or any better architecture.Anyway, I got banned from there long ago, because a different moderator was too PC. He'd blame me and others for telling lazy students who signed up to get their homework done for them to bugger off.I agree, it's good to know assembly language, but it's not worth using it to write entire programs in any more.

author: tggzzz
author_rank: Super Contributor
timestamp: August 03, 2022, 12:59:28 pm
content: Quote from: Zero999 on August 03, 2022, 12:31:18 pmMy post was #21. My previous post was #20QuoteNever heard of it.That mod sounds like a twat that insists "ontogeny recapitulates phylogeny".QuoteYupExcept for a trivial non-preemptive task scheduler which does little more than save/restore the condition codes, SP and PC

author: tom66
author_rank: Super Contributor
timestamp: August 03, 2022, 01:15:41 pm
content: Quote from: tggzzz on August 03, 2022, 11:54:13 amAdd to it: when figuring out bugs in slightly obscure compilers... more so than just seeing implementation variations (where the compiler produces compliant but unexpected code.)GCC is pretty bug free (in my experience) but I've found at least three code-breaking bugs in Microchip's XC8.One fun one was that structures with more than 128 bytes size were not handled correctly on PIC18 because the offset-from-pointer instruction/register expected a signed 8 bit integer, but the compiler was treating this as an unsigned 8 bit integer. Seeing the disassembly suddenly wrap around for high order members to negative pointer offsets was rather telling.

author: rstofer
author_rank: Super Contributor
timestamp: August 03, 2022, 03:05:16 pm
content: Quote from: Zero999 on August 03, 2022, 12:31:18 pmEven on modern ARM chips, the startup code is usually written in assembly code. Just look for startup.S or crt0.S (sometimes lower case .s if the file doesn't need pre-processing) in the project.https://github.com/MyEmbeddedWork/ARM7TDMI-LPC2148/blob/master/1.Docs/Codes/BUZZER/Startup.sSooner or later, you need to know this stuff.

author: nctnico
author_rank: Super Contributor
timestamp: August 03, 2022, 05:49:47 pm
content: The LPC2148 isn't a modern ARM microcontroller. The Cortex-Mx ARM controllers don't need any assembly to start or execute interrupts. You can use pure C to program these.Personally I'm not sure whether knowing assembly is required nowadays. Mainstream compilers like GCC for mainstream platforms like ARM do generate correct code. If something does go wrong due to different optimisation levels, the problem is in the code and not the compiler. Knowing assembly has been handy for me but the times I use that knowledge become more rare.Maybe it depends on what kind of projects a software engineer is working on. For low level stuff (hardware drivers) it can be handy but for higher level not so much. You can try to learn a million things but the trick is to learn only what is needed so you can spend more time on what really is important. All in all I'd concentrate on C and C++ for embedded development. A bit of Python for experimenting and maybe some embedded scripting could be handy.

author: tggzzz
author_rank: Super Contributor
timestamp: August 03, 2022, 07:22:21 pm
content: Quote from: nctnico on August 03, 2022, 05:49:47 pmThat's the traditional "victim blaming" attitude. Now itcanbe true that the core issue is PEBKAC, but IMNSHO there are so many instances of it with C (and especially C++) that the toolsarepart of the problem.Why else was itnecessaryfor Hans Boehmto point outtocompetentC programmers that you couldn't write threading libraries in C? Now that particular "surprising" deficiency may have been rectified in later versions of C. The excessive complexity and "feature interactions" whichconcealedthat deficiency from professional programmers has only got worse.QuoteThat's a very important point, and applying it has saved me countless hours of angst - notably avoiding C++ like the plague it isI wonder whether Rust will diminish the appeal/necessity of C for embedded systems? That will become apparent over the next decade or so.

author: SiliconWizard
author_rank: Super Contributor
timestamp: August 03, 2022, 07:33:44 pm
content: While you can definitely write firmware for many projects without ever touching a line of assembly code, that is still a very valuable skill to have. It *will* come in handy at some point, whether it is for understanding or modifying some startup code when needed, or for debugging a tricky issue, especially if it's actually a compiler bug. And yes, you will occasionally run into one.

author: SiliconWizard
author_rank: Super Contributor
timestamp: August 03, 2022, 07:35:09 pm
content: Quote from: tggzzz on August 03, 2022, 07:22:21 pmUh yeah. I am now almost convinced that Rust is a lost cause. We'll see.

author: djsb
author_rank: Super Contributor
timestamp: August 03, 2022, 08:01:37 pm
content: Do you have any contacts with the tutors at your college? Can you ask a subject librarian for the school/college you will be studying with about any set texts that are recommended? Basically networking. This is what freshers week is for.If I was to recommend a certain language, then it would waste your time. Most students in my experience just want to learn the essentials so that they can progress through the courses set for them.Using a problem-solving approach is probably best. Kind of like building up a toolbox of different languages as you go along. For instance, I've just started using the PI PICO, so I've been dabbling in MicroPython, so I'm picking up some python along the way. And I've also got to refresh my memory on PIC assembly language to get an LCD interface working. We teach C programming where I work. You will find out that the same basic structures are the same in ALL the programming languages. It also depends on if you want to major in software or hardware. Sorry if I've not answered your question.

author: PlainName
author_rank: Super Contributor
timestamp: August 03, 2022, 08:52:44 pm
content: QuoteYes, I agree, but I don't think you need specific assembler knowledge if you generally program in a high-level language. The odd times you need to sink to that level you can look up the specifics for that CPU, but in principle they are much the same.

author: mclute0
author_rank: Regular Contributor
timestamp: August 04, 2022, 07:26:26 am
content: I learned cobol and fortran on an IBM mainframe that required punch cards and every time you hit a key on the keyboard you thought it might eat some of your fingers.My opinion is that learning the programming concepts and terms is much more important than learning a specific language at the point you describe. Yes, learn something you think you will use even for fun.... and avoid pascal like it has covid.But seriously, Information Systems & Technology has a long-term cancer that is stiffing advancement. That cancer has spread into education and business in general. The problem is that no matter what you learn to use or do or create today, someone will decide for you that that there is a better & different way that will eventually obsolete what you have learned. They will claim it is to make everything better, but the fact is it will make them richer.There are entire industries that reap huge profits for every major change. New books to be written, new classes to be taught, new required courses for students, new hardware to design, build, sell, and on and on. This goes hand in hand with the disposable society we are creating where nothing is repaired. Just toss it in the trash.Making things with ASICS means you can force people to buy new things. Could Intel design sockets that don't need to be redesigned every two years? Sure, but then they would not sell as many motherboards. They learned this decades ago; there are profits in 'upgrades'.Instead of concentrating engineering on improving a time tested go instead for creating new higher cost equipment.ok, I am old and bitterI am not saying it is all bad, really. I am saying that if profit was not such a driver of the tech, the tech would be improved. Imagin if NASA or ESA was only doing what was the most profitable thing. Would there be an international space station? More likely so many communications satellites they would block out the sun. Would CERN even exist?as an old person, all I can say is good luck.

author: tggzzz
author_rank: Super Contributor
timestamp: August 04, 2022, 09:17:46 am
content: Quote from: mclute0 on August 04, 2022, 07:26:26 amThat problem also has advantages - sometimes but not as often as salesmen claim.There's an associated problem that doesn't have any advantages. HR and hands-off managers need to recruit staff for their project using technology X, so the adverts and screening process is based around buzzwords related to X. That's understandable. What isn't acceptable is that they filter out people with experience close to X that could easily be transferred to their project. That leads to clueless newbies making old mistakes all over again.Basically in hardware, software and systems, knowledge of the fundamentals will last a lifetime. But knowledge of specific technologies has a half-life of 3-5 years. Choose which specific technologies you learn with care.