|
This evening I've been looking at the "MASTER IGNITION ROUTINE" written by Peter Adler and Don Eyles at NASA circa 1968-1969. BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc Apollo-11[^]. It's absolutely amazing what they were able to accomplish with that hardware. They were obviously proud of their work and left two notable comments in the source code:
"Shame on anyone who thinks evil of it" at Line 66: "Honi soit qui mal y pense" also the motto of the Order of the Garter[^].
"Touch me not" at Line 72: Noli me tangere[^]
They were working with the 16 bit Apollo Guidance Computer[^] with no floating point instructions and that was all they needed to get to the moon.
- 3840 bytes of RAM
- 69120 byte ROM
- 85,000 CPU instructions executed per second.
I'm writing this post from my development workstation:
- 34,359,738,368 bytes of RAM
- Quad-core Xeon capable of performing over 3 billion operations per second.
The hardware has become so much better... but I somehow feel that something is wrong with the way we write software today.
Best Wishes,
-David Delaune
|
|
|
|
|
Quote: I somehow feel that something is wrong with the way we write software today
I blame the abundance of languages: there are literally too many languages going around, cutting into the learning part that is (or rather was) to shorten code, shorten the number of statements to execute, shorten the time of execution, etc.
IMHO there should only ever be 8 languages:
1. Assembly.
2. C/(maybe)C++ One that you can use to build apps.
3. One from either (Java/C#). This one may or may not be needed much.
4. One language to design webpages HTML/HTML5/CSS.
5. Front End scripting language (JavaScript/TypeScript)
6. Backend Language (PHP/Node.JS/Python).
7. Database Querying language SQL.
8. Maybe I'm missing something.
The reason I chose a limited number of languages contrary to popular beliefs are:
1. Bring quality into the fold when learning.
2. Stop coders from getting jobs just because they can write a few lines of code in some lesser known language.
3. Standardization: this will make data transfers between apps faster.
4. Stop Big Companies especially Google from thinking they can ask consumers to upgrade their hardware specs when they make an update on their software.
Sadly this scheme will never be implemented because most of the companies would lose monopoly over the products that require a specific tech stack.
P.S. Slashes (/) represent exclusive OR not inclusive.
|
|
|
|
|
You only need one - machine language.
|
|
|
|
|
Yeah, one...for each machine. And there are hundreds.
|
|
|
|
|
I agree with your assessments, with one or two exceptions. One would be to get rid of JavaScript altogether since using a back-end language such as C# on the front-end such as what is being done with Micrsoft's Blazer and its use of Web-Assembly makes more sense than having to rely on a broken-down scripting language such as JavaScript.
I would also add VB.NET to this list. It is as fast as C#, since it compiles to the CLR just like its more popular sibling. Having Java, C#, and VB.NET as options will fit all the personalities that tend to code all forms of business applications.
Back-end languages should be the same as the front-end as just noted since the use of a single language would substantially reduce defects all around as well as the time it takes to produce a quality product.
I would also eliminate PHP and Node.js.
PHP is in decline and cannot be used as a general purpose language forcing a developer to know an additional language for other work. Node.js is JavaScript and such frameworks are more problems than they are worth.
During the mainframe days we all used a limited but similar tool-set no matter where we worked. This allowed us to always concentrate on application development design and their requirements.
Today, everyone is concentrating on tools and so the entire business end of the profession has become a complete mess with everyone creating their own tools and frameworks as the #MeToo meme has taken substantial hold in the field.
Finally, I would suggest a movement to return to the development of client\server applications. They are far more efficient to develop for small and medium sized applications that will have limited use. Web development is not need for many applications today and comes with a substantial amount of complexity that increase costs of development and maintenance substantially. Though more difficult in Java, the Microsoft .NET environments are perfect platforms for such development and there are several options to create the necessary tiers for such development; Windows Communication Foundation (WCF), Service-Stack, and ZeroC's magnus opus, ICE.
Less, in our work, always means more. However, you are correct to assume that such suggestions will never win out among the technical masses since so many have personal investments in the way the profession has become structured in the past 10 years or so...
Steve Naidamast
Sr. Software Engineer
Black Falcon Software, Inc.
blackfalconsoftware@ix.outlook.com
|
|
|
|
|
Quote: One would be to get rid of JavaScript altogether
I agree on that point, but I added it for two reasons
1. I've been told that I have some personality differences with JavaScript.
&
2. Weather anyone (including me) likes to admit or not, JavaScript has over the years become the mainstream language on almost every platform for almost everyone.
So I just included it in secret hopes of someone saying exactly that.
Quote: I would also add VB.NET to this list
I considered it and then excluded it in favor of C# due to lack of existing developer-base (the same reason I included JavaScript). Also I have never written a line in VB.Net, C# on the other hand I've used many times for smaller problems and school problems, while professionally I've stuck with Java.
Yeah I'm not as old as you. Mainframes? I some times wish I could see one in person.
Quote: PHP is in decline and cannot be used as a general purpose language
True but just as my earlier points it is widely used and understood.
Agree with all of your other points wholeheartedly.
|
|
|
|
|
I could Possibly not agree with you more.
|
|
|
|
|
Steve Naidamast wrote: I would also add VB.NET to this list. It is as fast as C#, since it compiles to the CLR just like its more popular sibling. Having Java, C#, and VB.NET as options will fit all the personalities that tend to code all forms of business applications.
I went in the opposite direction. Starting with VB.NET, I quickly shifted to C# for two fundamental reasons.
- Triple-slash comments on classes and their properties and methods that become IntelliSense help.
- C# code looks more like the mathematical expressions that are its underpinnings.
- Succinctness of expression that requires less typing to accomplish the same result. For example, IF Expression THEN becomes if ( expression ) {, while END IF becomes }. Likewise, the right bracket replaces the word NEXT in FOR and FOREACH loops, WEND in WHILE loops, etc.
Although I am a good touch typist, I am not as fast a typist as many of my colleagues; this is the result of a subtle birth defect that impedes my hand-eye coordination. Hence, accomplishing a test with fewer keystrokes is to my advantage.
My appreciation of the closer resemblance of C# source code to mathematical expressions may have its roots in the fact that my first programming language was FORTRAN.
David A. Gray
Delivering Solutions for the Ages, One Problem at a Time
Interpreting the Fundamental Principle of Tabular Reporting
|
|
|
|
|
I like your general point.
Personally, I would replace #4 with CSHTML5 (uses XAML and C#) for web development. While it still generates HTML/CSS/JavaScript as an output, the developer only needs to deal with XAML and C#. But, that is a subjective, personal preference to stay out of the HTML/CSS/JavaScript swamp as much as possible.
I would use C# for #6, but then, I do prefer the ASP.NET/MVC route. Again, a subjective view.
modified 20-Jul-18 12:30pm.
|
|
|
|
|
MSBassSinger wrote: CSHTML (uses XAML and C#)
CSHTML uses HTML and Razor, not XAML.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Perhaps you should check again.
CSHTML5 uses C# and XAML.
|
|
|
|
|
CSHTML5 != CSHTML[^].
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
I never said they were the same. You'll notice I corrected my typo where I left off the "5" above after you initially replied.
Razor is a good step forward in the swamp of HTML/CSS/JavaScript, but my point is that it is better to be out of the swamp altogether. CSHTML5 is a good step forward in that. Much like Xamarin is with generating the native code for iOS/Android/Windows, and compilers do for creating machine code from a higher level language.
Thanks for pointing out my typo, as it was in need of correction.
|
|
|
|
|
I started my professional career wiring Control Panels for Unit Record Equipment or Tabulating Machines. I moved on to programming in AutoCoder for an IBM1401, IBM System/360 series using COBOL. Using punched cards, via a 2540 card reader, were the only input medium and IBM 2401 tape drives for storage, followed by IBM 2311 disk drives. Those beginnings were great. Loved programming the “Big Iron”. I then transitioned to the PC, programming every language compatible with MS operating systems. Wrote my first Windows program using VB3 on Windows 3.0.
I still program, have been even after retiring nearly 10 years ago, I still support the company from which I retired, but from 3000 miles away. In my “datacenter” I am running 2 Dell T110’s, One is a database server, with 500G of storage, and the other is a web server. Each have 16G of Ram. The database server is running MS Windows Server 2008R2 Datacenter. Desktop is Windows 7 Professional with 32G of Ram. More computing power than I could have ever imagined, and all in my spare bedroom.
Through the intervening years I’ve programmed on all of the popular languages, primarily with the Microsoft Stack. I’ve programmed using IBM’s IMS DB/DC using COBOL and MS SQL Server 4.2 and every version up to SQL 2008 (I’m beginning a project to upgrade from 2008 to 2017, as well as “upgrading” from VB6 (I know, I know) to the Web).
As programmers, technologists, we have to adapt to not only what ‘s “popular” but also what’s practical. The web is incredible, allowing people like myself, for example, to continue to contribute, but on my terms. I agree that there have been perhaps an unreasonable proliferation of languages and frameworks. Every 24 year old has invented something, convincing investors that this is the next great thing. But then, we could all still be wiring Control Panels or on Big Iron using 026 Key Punch machines fed into an IBM 360 with 80x25 display.
|
|
|
|
|
Do you do any Desktop Programs? I can't imagine using C, or C++ for a large Desktop business application. Probably because I've never taken time to learn either of them.
I've made do with VB, VB.Net and C#.Net since Visual Studio first came on the scene.
Seems to me that the verboseness of the languages has increased as new features and capabilities have been added over the last 40 years. Also, some languages are better suited to some types of applications than others. So the requirements, hardware, timeframe allowed and size of the development teams all dictate which language is needed to get the job done.
Sorry, Dude, the Genie is out of the bottle, and there's no stuffing it back in.
The older I get the less sure I am of anything...
modified 20-Jul-18 20:49pm.
|
|
|
|
|
Another important factor that is seldom mentioned in such discussions is the practice of assembling new code from reusable code, a practice that dates almost to the beginnings of electronic computing machinery.
Though Microsoft did its part to encourage this with the Base Class Library that ships with the .NET Framework, the BCL has many shortcomings, and was never expected to be the "final solution" to the practice of assembling software from interchangeable parts (reusable code). It's called the Base Class Library for a good reason; it is a set of base classes, intended to provide a solid foundation upon which to build applications.
Soon after I began writing in C# (in late 2005), I began extending the BCL with my own library of helper classes that improve the development experience in several ways.
- Among the shortcomings addressed by the resulting constellation of libraries is the addition of a set of symbolic constants intended to make the code that uses them easier to read and implicitly better documented.
- Another shortcoming the library addresses is a simplifcation of certain multi-step processes into single operations. For example, computing a message digest over either a file or a string is a multi-step process comprised of an initialization phase, a processing loop, and a finalization phase. These I simplifed into single static method calls that reduce digesting a file or string to a single method call.
- A third significant feature of the library is encapsulation of complex formatting and transformation operations into single method calls, such as formatting a byte array into a hexadecimal dump, or transforming the byte array returned by the embedded resource readers into an array of strings of the correct encoding and stripping away the Byte Order Mark put there by the editor that created it to document its encoding.
The WizardWrx .NET API is a constellation of class libraries that encompasses all of the above, and a lot more, about which you can learn by visiting the repository at GitHub - txwizard/WizardWrx_NET_API, where you can obtain a copy of the libraries, in source and binary form, and read the comprehensive HTML documentation available at Introduction to the WizardWrx .NET API.
David A. Gray
Delivering Solutions for the Ages, One Problem at a Time
Interpreting the Fundamental Principle of Tabular Reporting
|
|
|
|
|
Quote: 3840 bytes of RAM
69120 byte ROM
85,000 CPU instructions executed per second.
Sound like basically a slow Arduino to me. We can do a lot on those, if you don't have to carry around file systems, threaded OSes, Grabage collectors or JIT compilers.
Quote: The hardware has become so much better... but I somehow feel that something is wrong with the way we write software today.
The web happened. The suddenly, everything got slower, less responsive, more crashy and most of all, more hungry for RAM, CPU and drive.
Nobody makes native apps anymore, ever since google has convinced the world that native is irrelevant and web is the future. As a result the most professionally used chat app uses 1.5 GB of RAM because "native is bad, that's what they did in Windows time, lol".
You think I may exaggerating? Check out the next post.
Quote: I blame the abundance of languages: there are literally too many languages going around, cutting into the learning part that is (or rather was) to shorten code, shorten the number of statements to execute, shorten the time of execution, etc.
IMHO there should only ever be 8 languages:
1. Assembly.
2. C/(maybe)C++ One that you can use to build apps.
3. One from either (Java/C#). This one may or may not be needed much.
4. One language to design webpages HTML/HTML5/CSS.
5. Front End scripting language (JavaScript/TypeScript)
6. Backend Language (PHP/Node.JS/Python).
7. Database Querying language SQL.
8. Maybe I'm missing something.
1. Humans very rarely use assembly today, only in special cases and only in embedded. It's just too prone to errors and is completely unreadable and unmaintainable code.
2. C for apps? You must be a kernel developer. Maybe C++ but it's far from ideal, even though I love it for embedded.
3. This is where you piss me off. You claim the best managed languages out there with literally millions of apps (all Android and UWP apps are in Java and C#, respectively), aren't needed.
4,5,6,7. Then you spout a bunch of random web jargon words and claim these are way more important than kernel or app languages.
8. Only Tiobe and managers consider SQL a programming language.
It's not the languages. It's people like you (I'm not trying to be disrespectful), who believe the world revolves around the browser instead of the people. People who don't value decades of work and frameworks, tools, optimizations, good engineering design...
Because it's not fashionable this week on slashdot, so our users will continue to download 10 MB of Javacript everytime they click a button on a page. But who cares about UX/UI, right, what matters is you didn't have to touch those yucky native tools, you're still in your wild-west browser framework.
/Rant cool down.
|
|
|
|
|
Thanks, André; you said what I was thinking.
Software Zen: delete this;
|
|
|
|
|
André Pereira wrote: assembly...completely unreadable and unmaintainable code. To those that are unfamiliar with the language, not unlike any other language. Well written assembly, along with good comments are important, as is the necessary hardware specific knowledge of the person looking at the code.
"the debugger doesn't tell me anything because this code compiles just fine" - random QA comment
"Facebook is where you tell lies to your friends. Twitter is where you tell the truth to strangers." - chriselst
"I don't drink any more... then again, I don't drink any less." - Mike Mullikins uncle
|
|
|
|
|
Don't get me wrong, I think assembler is amazing in one way: if it doesn't work IT'S YOUR FAULT. I loved making simple games in assembler.
But even the embedded guys stay away from such beast, only reserving it for high-throughput applications, like bit banging. Otherwise, it's not worth effort, notwithstanding that most modern compilers do 99% of the job well. Long gone are the days of multi-page functions just to calculate an output. Bless you assembler.
|
|
|
|
|
André Pereira wrote: if it doesn't work IT'S YOUR FAULT Truth!
"the debugger doesn't tell me anything because this code compiles just fine" - random QA comment
"Facebook is where you tell lies to your friends. Twitter is where you tell the truth to strangers." - chriselst
"I don't drink any more... then again, I don't drink any less." - Mike Mullikins uncle
|
|
|
|
|
Quote: This is where you piss me off. You claim the best managed languages out there with literally millions of apps (all Android and UWP apps are in Java and C#, respectively), aren't needed.
I just considered Java/C#/VB and other with C++ and thought they all can be eventually replaced with C++. And why not, its not like you can't have C++ libraries. From what I understand the reason Python has become so powerful and is currently being accepted so actively nowadays is because it uses native C++ written libraries.
Quote: 4,5,6,7. Then you spout a bunch of random web jargon words and claim these are way more important than kernel or app languages.
I didn't actually, but I can see why you thought that. I took into account the user-base of different languages and presented a list. I also took into account the general like and dislike towards these languages; the reason I said Java/C# may or may not be excluded. I am a Java developer and last thing I want is to kill Java, cause otherwise I'd need to learn either C# or C++ since other languages drive me nuts. While making the list I realized that there are just too many languages out there that I haven't personally used, so I kept my list to the most used/popular ones.
Also I decided to include different sets of languages for front-end and back-end development, since most of the devs I know are happier and prefer it this way. My humblest apologies if you thought I am a non-native advocate. I am in fact the exact opposite.
So in the end I came up with a simple list that describes the different levels at which these languages may be needed. The same reason I left out 8.
Quote: 8. Only Tiobe and managers consider SQL a programming language.
I have no idea what Tiobe means; but I get your gist, in my defense I only reluctantly added it knowing full well it is not a language but it still requires a different set of developers.
P.S. SQL point was actually 7th.
|
|
|
|
|
First of all, thanks for being a good sport , and let me reitirate: Quote: I'm not trying to be disrespectful
Quote: just considered Java/C#/VB and other with C++ and thought they all can be eventually replaced with C++. And why not, its not like you can't have C++ libraries. From what I understand the reason Python has become so powerful and is currently being accepted so actively nowadays is because it uses native C++ written libraries.
Nope, C++ itself will be supplanted eventually, even in embedded, where the main target now is Rust. Java and C# in particular are just about perfect for app making, falling back to C++ (messier code) modules for performance critical sections, just like you said. As for Python, I don't think the huge performance loss compensates a (arguably) cleaner code, or the development overhead of finding/making C++ native libraries.
Quote: hile making the list I realized that there are just too many languages out there that I haven't personally used, so I kept my list to the most used/popular ones.
I get your message, and fact is yes, sometimes we seem to have so many tools. Let me get you up to speed where we are in terms of app development. Tool selection is narrow, you either prefer performance or code readability (think Java/Android vs C++/NDK, or C# vs C++ on .Net). Backwards compatibility, legacy, dependency management, all of that is now native for every platform.
So there's no need to continuosly reinvent the wheel, like happened to native development for 20 years (you had a menu of frameworks to choose from, all very bad in some way), and what's still happening in the web world.
Besides, I used "web jargon" in jest, because that's what it looks like to outsiders :P
Quote: Also I decided to include different sets of languages for front-end and back-end development, since most of the devs I know are happier and prefer it this way. My humblest apologies if you thought I am a non-native advocate. I am in fact the exact opposite.
No need to apologize, I was the one ranting. But for me, just the fact that you even have to think about sets of languages for front-end and back-end makes me uncomfortable.
|
|
|
|
|
Quote: I'm not trying to be disrespectful
Message received the first time, no need but thanks.
Quote: C++ itself will be supplanted eventually, even in embedded, where the main target now is Rust.
Call me an Old Soul traditional/nostalgic but somehow I always find that older things built by way older men/women work better, are durable and yet so simple. Haven't looked at Rust since the beginning of time but I have heard good things about it from good folks. But I sincerely doubt anything can take over C++ in its domain.
Quote: Let me get you up to speed where we are in terms of app development. Tool selection is narrow, you either prefer performance or code readability (think Java/Android vs C++/NDK, or C# vs C++ on .Net). Backwards compatibility, legacy, dependency management, all of that is now native for every platform.
I understand your point, to clarify I am an Android/Java developer though probably not as nearly as experienced as you are. Any how, sometimes I wonder about the possibility of an application platform with C++ as the core language and an XML/XAML-like language for design. It shouldn't take much more than it did with Android/Java/XML to make that happen. Unfortunately I am all too young and inexperienced (at least now) to make something like that myself. I'm mainly running away from Java because of its Memory Management issues, I just want to be in control of keeping and releasing my memory. Otherwise Java is a beautiful language. If I ever did manage to bring C++ into Mobile/Desktop development then I'll probably take away multiple inheritance; its a curse and a blessing.
|
|
|
|
|
Quote: Call me an Old Soul
My fellow old soul I agree with you in principle, but in reality I'm looking more and more favorably towards Rust embedded. D language was a late disappointment and I don't think it'll ever take off. Rust people are now VERY ACTIVE in getting Rust to work with micro-controllers, resulting in performance in the same range as C++ (i.e., near perfect for almost everything) with all the safety checks and enforcements of Rust. Check out some of the stuff they're making with dependencies and abstracting the micros hardware, it's amazing.
Quote: Any how, sometimes I wonder about the possibility of an application platform with C++ as the core language and an XML/XAML-like language for design.
Open up visual studio, new project, C++ UWP with .net Core.
Welcome to UWP heaven
|
|
|
|
|