<div dir="auto">Thanks for the clarifications.<div dir="auto"><br></div><div dir="auto">md</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, May 19, 2024, 21:27 Leam Hall via Ale <<a href="mailto:ale@ale.org">ale@ale.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">My apologies for the lack of clarity. My hope was to convey two main points:<br>
<br>
1. Having to cover that many topics in a 8 week class would definitely cause many of us to struggle, no matter what the topic.<br>
2. Time to develop and time to run are factors in choosing a language. I find portability another.<br>
<br>
Leam<br>
<br>
On 5/19/24 17:08, Jon "maddog" Hall wrote:<br>
> Leam,<br>
> <br>
> I had a bit of a hard time following everything you said, but I will do my<br>
> best to answer:<br>
> <br>
>> FORTRAN and the struggling....<br>
> <br>
> I learned FORTRAN II using punched cards, and taught FORTRAN IV in the<br>
> years 1977 to 1980. Our school had a FORTRAN IV compiler on a PDP-11/70<br>
> running RSTS/E. FORTRAN 77 was out at that time, but we did not have the<br>
> budget to buy a compiler from DEC. I remember giving my students the task<br>
> of writing a pre-compiler in FORTRAN IV to convert FORTRAN 77 statements<br>
> into FORTRAN IV, and the pre-compiler had to be written in FORTRAN IV.<br>
> <br>
> FORTRAN IV only had arithmetic IF and no string manipulation statements, so<br>
> you can imagine how hard this was to do. I think two out of 20 students<br>
> actually got something close to working.<br>
> <br>
>> "Blazingly fast"<br>
> <br>
> Yes, there are many ways to implement an interpreter and many job loads.<br>
> The example given was on an HPC system where number crunching rules, and<br>
> you probably spend 50-60% of your real time on user-written code. But in<br>
> many applications today you spend a significant amount of your time in code<br>
> written by someone else (graphic code, database code, system library code,<br>
> etc) so from a speed of execution of the total program standpoint the speed<br>
> of the language's code in execution is small.<br>
> <br>
> <br>
> <br>
> Of course since then there was Fortran 90 (I think that was when the name<br>
> became mixed case) High Performance Fortran (HPF) and some other issues of<br>
> Fortran....<br>
> <br>
> As to portability, that is a problem in many languages that are implemented<br>
> by different vendors with relative levels of success. DEC spent a lot of<br>
> time and money on their compiler suites, and we spent a lot of time on<br>
> standards bodies. We even spent a LOT of time making VAX "C" compatible<br>
> not only with AT&T "C" but with gcc. The goal was to try and re-compile<br>
> the entire X Window System Server with VAX "C", hopefully seeing a large<br>
> increase in speed due to our optimizers.<br>
> <br>
> But we did not see that increase in speed, because the people who wrote the<br>
> X Window System Server knew the gcc compiler so well they wrote their code<br>
> to be very optimized in the first place.<br>
> <br>
> On the other hand, Boeing standardized on gcc across all their vendor's<br>
> systems (and hired Cynus to support them) because the gcc compilers had<br>
> *exactly* the same syntax and semantics across all those systems. This, of<br>
> course, reduced the number of ifdefs and testing threads they had to have<br>
> across their many systems from many vendors.<br>
> <br>
>> In those environments, the OS came with C compilers and that would have<br>
> been our choice if shell or whatever version of Perl or Python didn't do<br>
> what we >needed.<br>
> <br>
> Some OS came with the compilers, and some did not. In the early days of<br>
> Unix you HAD to have the "C" compilers because you HAD to compile the<br>
> kernel as you were installing the system (on servers that did not have<br>
> pre-installed systems, anyway). First you booted the tape drive to pull a<br>
> small kernel into memory, just enough to recognize the (hardcopy, serial)<br>
> console, memory, CPU, tape drive and one disk. Then you edited the<br>
> configuration file to type in the devices, addresses of the devices,<br>
> interrupt addresses (are readers remembering this?) and you then ran the<br>
> configuration program to create the module that could be compiled and<br>
> linked into the kernel. Then you would place that kernel on the disk and<br>
> boot it.<br>
> <br>
> BUT AS SOON AS WE GOT THE KERNEL OF THE DISTRIBUTION TO PROBE THE DEVICES<br>
> SO WE DID NOT HAVE TO COMPILE THE KERNEL we moved the compilers off the<br>
> system and created a second product to sell to customers. Oh well. It was<br>
> not just DEC. Sun did it too.<br>
> <br>
> Personally I use only GNU compilers. They do everything I want them to<br>
> do, with the efficiency I need. If I want the solution to go any faster I<br>
> either look for a better algorithm, or buy a faster CPU (GPU, FPGA, etc.)<br>
> <br>
> Peace be with you all.<br>
> <br>
> md<br>
> <br>
> <br>
> On Sun, May 19, 2024 at 11:40 AM Leam Hall via Ale <<a href="mailto:ale@ale.org" target="_blank" rel="noreferrer">ale@ale.org</a>> wrote:<br>
> <br>
>> My opinion, based solely on what you wrote below, is that "struggle" would<br>
>> be an understatement. That they could do anything in FORTRAN seems like a<br>
>> win to me. In the early '90's I took a Pascal class from a teacher who had<br>
>> taught it for a while, and I could still only do simple stuff.<br>
>><br>
>> The "compiled vs interpreted" question has another aspect: portability.<br>
>> I'm more of a tool builder than an application developer, I'd rather give<br>
>> someone the code so they can do whatever they need to be doing. Python is<br>
>> blazingly fast enough for everything I've done, but it is less and less<br>
>> portable.<br>
>><br>
>> A lot of coders assume you can "pip install X" or use whatever the latest<br>
>> version is of Python, and that's not the case for a lot of us. A quick<br>
>> count of my career shows seven of forty-two years *not* spent in a<br>
>> restricted environment; all we got was whatever came with the OS. Those are<br>
>> almost always outdated even when the OS is brand new, and not everything on<br>
>> PyPI is available. In those environments, the OS came with C compilers and<br>
>> that would have been our choice if shell or whatever version of Perl or<br>
>> Python didn't do what we needed.<br>
>><br>
>><br>
>> Leam<br>
>><br>
>><br>
>><br>
>> On 5/17/24 12:02, jon.maddog.hall--- via Ale wrote:<br>
>>> So you seem to have completely ignored my statement about the issue of<br>
>> development vs running where I specifically pointed out that in an<br>
>> educational environment you compile many more times than you run.<br>
>>><br>
>>> in 1977 I had the task of taking students who had never seen a computer<br>
>> in real life, never logged into an account, never used a text editor of any<br>
>> type and try to teach them FORTRAN in a eight-week summer-school course of<br>
>> three hours of lecture each week.<br>
>>><br>
>>> I asked the administration of the school if anyone had ever taught this<br>
>> before in this time frame and was told "Oh yes".<br>
>>><br>
>>> In was a time-sharing system (RSTS/E on a PDP-11/70), so I had to teach<br>
>> them what "logging in" was, what a file was, what data was, what a<br>
>> text-editor did (and how to use the commands), what compiling did, what<br>
>> linking did, how to use an interactive debugger, then programming itself<br>
>> and the FORTRAN language itself.<br>
>>><br>
>>> None of the students had access to computers at home, and there were not<br>
>> many people who could help them at home. No online forums for help.<br>
>>><br>
>>> They struggled. I struggled. And after eight weeks they were barely<br>
>> getting started with very, very simple FORTRAN programs.<br>
>>><br>
>>> On the other hand I often taught a ten-week course in FORTRAN to<br>
>> students who already had BASIC as part of a entry-level course called<br>
>> "Introduction to Data Processing". The students of that course thrived due<br>
>> to a much greater familiarity to everything other than the<br>
>> edit/compile/link/run/debug process (and even editing and debugging were<br>
>> easier because the concept of that was already known).<br>
>>><br>
>>> BASIC allowed simple editing just by retyping the line number with the<br>
>> statement. It allowed interactive "debugging" by being able to print out<br>
>> the variables using the source code variable name, or setting the variable<br>
>> to a different value before telling the interpreter to "continue". in<br>
>> RSTS/E you were talking to the BASIC interpreter as soon as you logged in.<br>
>> The BASIC interpreter was much like the shell interpreter in UNIX/Linux<br>
>> today.<br>
>>><br>
>>> The student could type in:<br>
>>><br>
>>> Print 5*3<br>
>>><br>
>>> then hit return and the machine would print:<br>
>>><br>
>>> 15<br>
>>><br>
>>> No editor, no compiler, no linker...<br>
>>><br>
>>> To be complete I know of no reason why FORTRAN could not be implemented<br>
>> in an interpreted fashion and after a program's source code is fully<br>
>> debugged sent through a "real" compiler to get a smaller, perhaps faster<br>
>> object. Once the program has been debugged you do not need the<br>
>> interactive debugger part of the program in memory.<br>
>>><br>
>>> And of course a more modern, fully functioning IDE could make the<br>
>> compile/link/execute/debug path significantly easier these days. And of<br>
>> course students today have used computers in so many ways through their<br>
>> phones, etc. that many of the concepts which I took up time in class the<br>
>> students already know.<br>
>>><br>
>>> Finally, I will say that when I finished the eight-week summer course in<br>
>> FORTRAN to what I felt were disastrous results I went back to the<br>
>> administration and questioned again if that course had ever been taught<br>
>> successfully before.<br>
>>><br>
>>> The answer was "no".....they had lied before.<br>
>>><br>
>>> /*But when the eventually approved and compiled code will be run every<br>
>> hour or so for the next 3-5 years, and that code requires MPI<br>
>> interconnection to 100-800 other nodes to run on every hour, devel/compile<br>
>> time starts looking to be less of a problem.<br>
>>> Pretty sure the heat generated to predict the weather has small but<br>
>> non-zero impact on the weather :-)*/<br>
>>><br>
>>> Quite frankly for this type of problem I might look at GPU or FPGA<br>
>> accelerators just like years ago we invented floating point accelerators<br>
>> instead of doing floating point using integer only CPUs.<br>
>>><br>
>>> Depending on the type of problem, a language like Erlang or Haskell<br>
>> would probably help with such a distributed problem<br>
>>><br>
>>> md<br>
>>><br>
>>><br>
>>>> On 05/17/2024 11:19 AM EDT Jim Kinney via Ale <<a href="mailto:ale@ale.org" target="_blank" rel="noreferrer">ale@ale.org</a>> wrote:<br>
>>>><br>
>>>><br>
>>>> The backend compile process is horrifyingly slow. But when the<br>
>> eventually approved and compiled code will be run every hour or so for the<br>
>> next 3-5 years, and that code requires MPI interconnection to 100-800 other<br>
>> nodes to run on every hour, devel/compile time starts looking to be less of<br>
>> a problem.<br>
>>>><br>
>>>> Pretty sure the heat generated to predict the weather has small but<br>
>> non-zero impact on the weather :-)<br>
>>>><br>
>>>> On Fri, May 17, 2024, 6:04 AM Jon "maddog" Hall <<br>
>> <a href="mailto:jon.maddog.hall@gmail.com" target="_blank" rel="noreferrer">jon.maddog.hall@gmail.com</a> mailto:<a href="mailto:jon.maddog.hall@gmail.com" target="_blank" rel="noreferrer">jon.maddog.hall@gmail.com</a>> wrote:<br>
>>>><br>
>>>>> It all depends on the implementation, but some interpretive languages<br>
>> are fairly fast at execution. The interpreter takes the source down to<br>
>> atoms (or "beans" if you go that way) and then feeds them to a very<br>
>> optimized run-time system.<br>
>>>>><br>
>>>>> Interpretive vs compiled also needs to be looked at the ratio of run<br>
>> time vs development. In a learning situation you may only run a program<br>
>> once for every time you compile it. An interpretive language is much<br>
>> "faster" (and less of a resource hog) than running an<br>
>> edit/compile/link/execute cycle.<br>
>>>>><br>
>>>>> md<br>
>>>>><br>
>>>>> On Thu, May 16, 2024, 21:36 Jim Kinney via Ale <<a href="mailto:ale@ale.org" target="_blank" rel="noreferrer">ale@ale.org</a> mailto:<br>
>> <a href="mailto:ale@ale.org" target="_blank" rel="noreferrer">ale@ale.org</a>> wrote:<br>
>>>>><br>
>>>>>> Compiled code. Still do FORTRAN when it has to be fast. Still do C if<br>
>> I need to burn up a monitor (oops!). But you can't learn it if you can't<br>
>> see it, touch it, and change it. The scripting languages are easier to<br>
>> learn and definitely have a place. And they are now the gateway to<br>
>> programming. They're not perfect and they slurp down hardware. I can't<br>
>> imagine python trying to run in the days of BASIC on an early pc jr. :-)<br>
>>>>>><br>
>>>>>> On Thu, May 16, 2024, 8:33 PM jon.maddog.hall--- via Ale <<a href="mailto:ale@ale.org" target="_blank" rel="noreferrer">ale@ale.org</a><br>
>> mailto:<a href="mailto:ale@ale.org" target="_blank" rel="noreferrer">ale@ale.org</a>> wrote:<br>
>>>>>><br>
>>>>>>> Chuck,<br>
>>>>>>><br>
>>>>>>> Many people did not recognize the benefit of pulling down the source<br>
>> code and typing it in by hand.<br>
>>>>>>><br>
>>>>>>> "Wow! What does that error mean? I typed it in just<br>
>> like....oh...I made a mistake!"<br>
>>>>>>><br>
>>>>>>> You had a syntax error, and BASIC showed it right away (most of the<br>
>> time anyway).<br>
>>>>>>><br>
>>>>>>> But maybe your syntax was correct and your program still did not<br>
>> work. Maybe the error was that you meant to type "2" and you typed "3' by<br>
>> mistake....a "run-time error".<br>
>>>>>>><br>
>>>>>>> You do not get to create or fix these problems if all you do is pull<br>
>> binaries off the web or load them from a CDROM.<br>
>>>>>>><br>
>>>>>>> This was EXACTLY why the professors at Cambridge University started<br>
>> the Raspberry Pi project. They realized that the freshmen of today often<br>
>> knew less about computers than the freshmen of 20 years ago...the ones who<br>
>> 20 years ago downloaded source code and (in some cases) even had to COMPILE<br>
>> it and LINK it in order to run it.<br>
>>>>>>><br>
>>>>>>> Happy Birthday, BASIC!<br>
>>>>>>><br>
>>>>>>> md<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>>> On 05/08/2024 8:10 AM EDT Chuck Payne via Ale <<a href="mailto:ale@ale.org" target="_blank" rel="noreferrer">ale@ale.org</a> mailto:<br>
>> <a href="mailto:ale@ale.org" target="_blank" rel="noreferrer">ale@ale.org</a>> wrote:<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>> I am surprised that this one didn't get an email. Happy Birthday<br>
>> BASIC, it turned 60. It only three years older than me, and has more<br>
>> functions than me too.<br>
>>>>>>>><br>
>>>>>>>><br>
>> <a href="https://www.tomshardware.com/software/programming/the-basic-programming-language-turns-60-dartmouth-basic-started-it-all-in-1964" rel="noreferrer noreferrer" target="_blank">https://www.tomshardware.com/software/programming/the-basic-programming-language-turns-60-dartmouth-basic-started-it-all-in-1964</a><br>
>>>>>>>><br>
>>>>>>>> As a kid, I got into BASIC because it was the way to get games. I<br>
>> forgot the name of the magazine, but I would buy it every month and sit at<br>
>> my VIC 20, trying the code in, playing such games and Oil, where you drill<br>
>> to get oil hoping to hit a pocket with a devil in it. Or trying to<br>
>> understand what the data fields were doing.<br>
>>>>>>>><br>
>>>>>>>> Since I missed the 4th as well, here some BASIC Code for you guys<br>
>>>>>>>><br>
>>>>>>>> <a href="https://www.goto10retro.com/p/star-wars-theme-in-basic" rel="noreferrer noreferrer" target="_blank">https://www.goto10retro.com/p/star-wars-theme-in-basic</a><br>
>>>>>>>><br>
>>>>>>>> Yes, I was one of those kids that would type some weird messages on<br>
>> the computers tha would repeat, like<br>
>>>>>>>><br>
>>>>>>>> 10 print "Long live ALE, bring more beer"<br>
>>>>>>>> 20 goto 10<br>
>>>>>>>><br>
>>>>>>>> Happy Computing guys<br>
>>>>>>>><br>
>>>>>>>> --<br>
>>>>>>>> Terror PUP a.k.a<br>
>>>>>>>> Chuck "PUP" Payne<br>
>>>>>>>> -----------------------------------------<br>
>>>>>>>> Discover it! Enjoy it! Share it! openSUSE Linux.<br>
>>>>>>>> -----------------------------------------<br>
>>>>>>>> openSUSE -- Terrorpup<br>
>>>>>>>> openSUSE Ambassador/openSUSE Member<br>
>>>>>>>> skype,twiiter,identica,friendfeed -- terrorpup<br>
>>>>>>>> freenode(irc) --terrorpup/lupinstein<br>
>>>>>>>> Register Linux Userid: 155363<br>
>>>>>>>><br>
>>>>>>>> openSUSE Community Member since 2008.<br>
>>>>>>>> _______________________________________________<br>
>>>>>>>> Ale mailing list<br>
>>>>>>>> <a href="mailto:Ale@ale.org" target="_blank" rel="noreferrer">Ale@ale.org</a> mailto:<a href="mailto:Ale@ale.org" target="_blank" rel="noreferrer">Ale@ale.org</a><br>
>>>>>>>> <a href="https://mail.ale.org/mailman/listinfo/ale" rel="noreferrer noreferrer" target="_blank">https://mail.ale.org/mailman/listinfo/ale</a><br>
>>>>>>>> See JOBS, ANNOUNCE and SCHOOLS lists at<br>
>>>>>>>> <a href="http://mail.ale.org/mailman/listinfo" rel="noreferrer noreferrer" target="_blank">http://mail.ale.org/mailman/listinfo</a><br>
>>>>>>>><br>
>>>>>>> _______________________________________________<br>
>>>>>>> Ale mailing list<br>
>>>>>>> <a href="mailto:Ale@ale.org" target="_blank" rel="noreferrer">Ale@ale.org</a> mailto:<a href="mailto:Ale@ale.org" target="_blank" rel="noreferrer">Ale@ale.org</a><br>
>>>>>>> <a href="https://mail.ale.org/mailman/listinfo/ale" rel="noreferrer noreferrer" target="_blank">https://mail.ale.org/mailman/listinfo/ale</a><br>
>>>>>>> See JOBS, ANNOUNCE and SCHOOLS lists at<br>
>>>>>>> <a href="http://mail.ale.org/mailman/listinfo" rel="noreferrer noreferrer" target="_blank">http://mail.ale.org/mailman/listinfo</a><br>
>>>>>>><br>
>>>>>> _______________________________________________<br>
>>>>>> Ale mailing list<br>
>>>>>> <a href="mailto:Ale@ale.org" target="_blank" rel="noreferrer">Ale@ale.org</a> mailto:<a href="mailto:Ale@ale.org" target="_blank" rel="noreferrer">Ale@ale.org</a><br>
>>>>>> <a href="https://mail.ale.org/mailman/listinfo/ale" rel="noreferrer noreferrer" target="_blank">https://mail.ale.org/mailman/listinfo/ale</a><br>
>>>>>> See JOBS, ANNOUNCE and SCHOOLS lists at<br>
>>>>>> <a href="http://mail.ale.org/mailman/listinfo" rel="noreferrer noreferrer" target="_blank">http://mail.ale.org/mailman/listinfo</a><br>
>>>>>><br>
>>>>><br>
>>>> _______________________________________________<br>
>>>> Ale mailing list<br>
>>>> <a href="mailto:Ale@ale.org" target="_blank" rel="noreferrer">Ale@ale.org</a><br>
>>>> <a href="https://mail.ale.org/mailman/listinfo/ale" rel="noreferrer noreferrer" target="_blank">https://mail.ale.org/mailman/listinfo/ale</a><br>
>>>> See JOBS, ANNOUNCE and SCHOOLS lists at<br>
>>>> <a href="http://mail.ale.org/mailman/listinfo" rel="noreferrer noreferrer" target="_blank">http://mail.ale.org/mailman/listinfo</a><br>
>>>><br>
>>><br>
>>><br>
>>> _______________________________________________<br>
>>> Ale mailing list<br>
>>> <a href="mailto:Ale@ale.org" target="_blank" rel="noreferrer">Ale@ale.org</a><br>
>>> <a href="https://mail.ale.org/mailman/listinfo/ale" rel="noreferrer noreferrer" target="_blank">https://mail.ale.org/mailman/listinfo/ale</a><br>
>>> See JOBS, ANNOUNCE and SCHOOLS lists at<br>
>>> <a href="http://mail.ale.org/mailman/listinfo" rel="noreferrer noreferrer" target="_blank">http://mail.ale.org/mailman/listinfo</a><br>
>><br>
>> --<br>
>> DevSecOps Engineer (<a href="http://reuel.net/resume" rel="noreferrer noreferrer" target="_blank">reuel.net/resume</a>)<br>
>> Scribe: The Domici War (<a href="http://domiciwar.net" rel="noreferrer noreferrer" target="_blank">domiciwar.net</a>)<br>
>> General Ne'er-do-well (<a href="http://github.com/LeamHall" rel="noreferrer noreferrer" target="_blank">github.com/LeamHall</a>)<br>
>> _______________________________________________<br>
>> Ale mailing list<br>
>> <a href="mailto:Ale@ale.org" target="_blank" rel="noreferrer">Ale@ale.org</a><br>
>> <a href="https://mail.ale.org/mailman/listinfo/ale" rel="noreferrer noreferrer" target="_blank">https://mail.ale.org/mailman/listinfo/ale</a><br>
>> See JOBS, ANNOUNCE and SCHOOLS lists at<br>
>> <a href="http://mail.ale.org/mailman/listinfo" rel="noreferrer noreferrer" target="_blank">http://mail.ale.org/mailman/listinfo</a><br>
>><br>
> <br>
<br>
-- <br>
DevSecOps Engineer (<a href="http://reuel.net/resume" rel="noreferrer noreferrer" target="_blank">reuel.net/resume</a>)<br>
Scribe: The Domici War (<a href="http://domiciwar.net" rel="noreferrer noreferrer" target="_blank">domiciwar.net</a>)<br>
General Ne'er-do-well (<a href="http://github.com/LeamHall" rel="noreferrer noreferrer" target="_blank">github.com/LeamHall</a>)<br>
_______________________________________________<br>
Ale mailing list<br>
<a href="mailto:Ale@ale.org" target="_blank" rel="noreferrer">Ale@ale.org</a><br>
<a href="https://mail.ale.org/mailman/listinfo/ale" rel="noreferrer noreferrer" target="_blank">https://mail.ale.org/mailman/listinfo/ale</a><br>
See JOBS, ANNOUNCE and SCHOOLS lists at<br>
<a href="http://mail.ale.org/mailman/listinfo" rel="noreferrer noreferrer" target="_blank">http://mail.ale.org/mailman/listinfo</a><br>
</blockquote></div>