10 ms·
Fourth-generation programming language
- dagipflihax0r 5y agoI think Yanis Smaragdakis Onward! 2019 paper fits here "Next-paradigm programming languages: what will they look like and what changes will they bring?" https://yanniss.github.io/next-paradigm-onward19.pdf https://yanniss.github.io/next-paradigm-onward19.pdf He has done a lot of work using datalog and argues, convincingly in my opinion, that it is reasonable that some of the elements of datalog-like programming will be part of the future. For example, that there is a very simple way to express a relational-join and the underlying machinery figures out the most efficient way to do it, just like a DB query optimizer does.
- ModernMech 5y agoIf you agree, check out the HYTRADBOI (have you tried rubbing a database on it) conference happening later today: https://www.hytradboi.com/ https://www.hytradboi.com/ This is a meeting of people who agree or at least are willing to explore that datalog and related systems are the way forward. Lots of interesting programming systems will be presented!
- Tostino 5y agoNot OP, but thanks for that! Will check it out.
- sirwhinesalot 5y agoDatalog is one of my favorite languages, specially the Soufflé implementation with static types. Just as mainstream languages started adding OO-related and later FP-related features, I hope logic-programming / relational-programming is next in line, and Datalog is (IMO) by far the best implementation of the paradigm. It's super simple to understand, it pushes you towards good modeling practices by design, it's highly efficient, the only downside is weak language integration / lack of popularity...
- fallingfrog 5y agoYeah, but in my experience, DB query optimizers are terrible. Ideally you'd be able to write "select * from A, B, C where A.col1 = B.col2 and B.col3 = C.col4", but in practice, you have to hold the SQL interpreter's hand by using inner joins and carefully choosing which table to start with and what order to join them, in effect doing the query optimizer's work for it.
- ngcc_hk 5y agoSurprise by the definition and the examples. Use icl quick builder and quick master in 1980s and the key selling point is end result oriented, not procedural etc. you state what you want and the computer figure it out. Not really. But the dream and selling point is that. Just like the 5th generation using prolog. The system figure itself out.
- Izkata 5y ago> end result oriented, not procedural etc. you state what you want and the computer figure it out. Yeah, this is how I've always understood fourth-gen programming language as well. SQL and Prolog were always the prime examples of "state what you want and let the system figure out how to get it".
- flohofwoe 5y agoIMHO the idea that the history and future of programming languages follows a pre-determined ladder, or 'generations' is misguided. More abstactions isn't necessarily better then more explicitness. Functional style isn't necessarily better than OOP, and OOP isn't necessarily better than 'imperative style'. All the different languages will not converge into a "perfect" language some time in the future, if anything, it looks like the opposite is true. I sometimes wonder if Marxism has a bigger influence in some "language designer circles" than (for instance) Darwinism ;)
- q-big 5y ago> I sometimes wonder if Marxism has a bigger influence in some "language designer circles" than (for instance) Darwinism ;) Or some (programming) language designers are creationists deep inside their hearts (without willing to admit it). ;-)
- xiphias2 5y agoRust needed 25 years to bring us a significally improved abstraction over C++ without sacrificing resource usage. It just shows that it's much easier to say that we need a higher level language than to know what would work in practice well enough to be useful as a systems level programming language. At the same time Linux was released 20 years after C, so of course Rust has to mature more to really take over C++.
- DubiousPusher 5y agoIs Rust an abstraction over ideas in C++ or is it in fact just a better set of abstractions over the same underlying operations? I would say the latter, mostly due to jettisoning OO nonsense.
- xiphias2 5y agoSure, I agree with you, I meant that Rust's type system is a better abstraction over manual memory management than C++'s type system, I didn't mean that Rust is an abstraction over C++, I'm just not that great in expressing myself clearly in this case.
- twjerh34234 5y agoLISPer looks at this and rolls his eyes. Pfft. Muggles.
- WantonQuantum 5y agoAnything substantive to contribute or just condescension?
- theknocker 5y ago
- aidenn0 5y ago> In spite of its lack of popularity, LISP (now "Lisp" or sometimes "Arc") remains an influential language in "key algorithmic techniques such as recursion and condescension"[1] 1: https://web.archive.org/web/20220422061858/https://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wrong.html https://web.archive.org/web/20220422061858/https://james-iry...
- shrubble 5y agoI view this as a highly accurate response from LISPers.
- math-dev 5y agoI’m a lisper and i did roll my eyes :D
- zozbot234 5y agoNeither LISP nor Prolog can be feasibly extended to enable development for large scale parallel computers. Erlang and Rust are true Fifth Generation Programming Languages, everything else might just as well be a purely amateurish effort.
- shakna 5y agoI take it that you're unaware that there are already Lisps running on Erlang, like LFE [0]? [0] https://lfe.io/ https://lfe.io/
- speed_spread 5y agoThe problem was that there never was an accompanying wave of fourth generation programmers. 4GL were targeted at analysts and non technical personnel. Turns out, making people care about how the machine does it is the real challenge. A higher level lang isn't going to change that.
- patrck 5y agoLots of people live out full productive lives in SQL, R, etc. I like the article's idea that DSLs are 4GLs. ie. crafting the nouns and verbs needed to work a problem.
- jeffbee 5y agoA huge number of in-house corporate developers never needed anything beyond powerbuilder to make the apps their companies needed. Certainly they didn’t give a damn about the hardware. Those apps spend 100% off their time waiting for the user to do something or waiting for the database.
- theknocker 5y ago
- pmt21477 5y agoGame consoles, fighter jets... Anyway, it's interesting that there is no 5'th generation language, at least on wikipedia.
- rwmj 5y agoThere very much was something that claimed to be the "5th generation" project, out of Japan. At the time it was taken very seriously. Most people now regard it as having been a failure. https://en.wikipedia.org/wiki/Fifth_Generation_Computer_Systems https://en.wikipedia.org/wiki/Fifth_Generation_Computer_Syst...
- vegai_ 5y agoIt's probably because everyone realized that a marketing person claiming that something is "fourth generation" doesn't actually mean anything in a technical sense. But also: https://en.wikipedia.org/wiki/Fifth-generation_programming_language https://en.wikipedia.org/wiki/Fifth-generation_programming_l...
- gilleain 5y agoFollowing one of these languages (that I had not heard of) back to its wikipedia page, I see: > In JavaOne 2003, in June, JavaSoft announced its intention to create a wholly-owned scripting language for the Java platform. This monopolous move has stifled the lives of most of its competitors. The result was the Groovy language, whose name is apparently a phonetic morphing from "jruby", with its first version released in 2007. Its built-in Ant support is suspiciously connected to Judoscript's Ant scripting feature, chronologically speaking. Some bad feeling there! https://en.wikipedia.org/wiki/Judoscript https://en.wikipedia.org/wiki/Judoscript
- cosmiccatnap 5y agoThey seem to list the Unix shell as a 4th gen language... Considering my experience with shell scripting I think I'm fine with the tools provided by my 3rd gen languages.
- mrlemke 5y agoDon't take the following as a critic of your disdain for shell. Your comment reminded me of this: https://www.gnu.org/software/nosql/4gl.txt https://www.gnu.org/software/nosql/4gl.txt Note to phone users, the formatting works better in landscape. I don't remember when this was written, but it's an interesting read. It requires a bit different approach, but it is augmented well by 3GL programs. Commands that don't exist can be written in shell, Python, C, Rust, etc. I usually use a shell first approach, start the command as a shell script and rewrite it in something else if necessary. It is quite flexible and extensible if you work within it's data types (probably the wrong term, but f.g. files and text streams).
- Bolkan 5y agoStockholm syndrome
- DonaldFisk 5y agoThe original generations referred to hardware: (1) thermionic valves, (2) transistors, (3) integrated circuits, (4) VLSI. Japan's MITI initiated and funded a project to develop a fifth generation of computers, which were to be highly parallel, but MIMD (Multiple Instruction Multiple Data), specifically dataflow computers, rather than SIMD. The system language for this was to be a Prolog variant, and many of the applications running on fifth generation computers were to be Symbolic AI - expert systems, machine translation, etc. These generations were later mapped onto software. The first two generations were machine code and assembly language. Prolog and other similarly high-level languages would be fifth generation. The Japanese Fifth Generation Computer Project was largely unsuccessful, but after it was announced it spurred governments in various countries to start competing projects (e.g. Alvey in the UK).
- zozbot234 5y agoDataflow analysis is commonly used to extract small-scale parallelism for modern superscalar compute - either done by the compiler, or directly in hardware. On a slightly larger scale, high-performance async programming using job-stealing schedule strategies across multiple compute cores can also be viewed as a dataflow approach. So all of this stuff is in fact being commonly used today, a lot more than most people might realize. Your database queries are probably handled via methods quite indistinguishable from much "Symbolic AI" or "expert systems", and parallelization is gaining ground there too.
- DonaldFisk 5y agoYes, I'm aware of this. At the time (early 1980s), the aim was to build machines in which data was sent between separate general-purpose CPUs in a multiple CPU machine. The University of Manchester had a working prototype.
- dehrmann 5y ago> MIMD At that point, why not just have another core?
- 5y ago
- devnull255 5y agoI was introduced to programming in *NIX environments by Informix 4GL, which after learning I could generate the intermediary C code files with an option provided by its 4glcc (or something like that) command, led me to C. I was fascinated by how many lines of C code were generated with a 'let' assignment statement, and also by how assignments in 4GL were mapped to push and pop operations on a stack variable. I also saw the link to RPG in the article. I took an RPG programming class in 1983, and I'm glad I forgot most of that.
- whartung 5y agoMy Informix 4GL days were simply the most productive of my career. We were able to do so much, so quickly using these systems. Along with the domain expert, I was able to, single handedly, create an entire distribution system in less than a year. Order Entry, Credit/Debit memos, Inventory and planning, shipping and traffic, the gazillion reports, custom forms (let's hear it for dot matrix printers and their myriad of escape codes), and workflows, posting to AP, AR, GL, all of the exotic (and ever changing) pricing, discount, and royalty models. It was not uncommon for a typical order to hit 50 different accounts in the GL. One on one interviews with the users, direct user support ("Yea, hang on, I'll be right there"), seeing their face light up when you showed them something they liked, getting yelled at when things got rocky, the whole kit. The back office staff was about 50 people. The IT fellow knew the business, so I interacted directly with him, and coded everything up. The GL/AR/AP system was pre-existing, I didn't have to write that. We were a small consulting firm that customized an existing accounting package. Most customers didn't need anything as big as this. But even then, we had another fellow do essentially the same thing for a warehouse company. Hook up with an internal domain expert and pound out their entire system. We're talking green screen, and green bar paper here. So, "UI" was trivial. UI discussions centered around how best to abbreviate field names or codes to cram more on particularly loaded screens, and what field order to use. CRUD screens and reports in an hour. Thank heavens for decimal math. A simpler time to be sure, but we got so much accomplished. Informix 4GL was imperfect, as are all things, but we rarely had to say "no" to something because of it.
- inejge 5y agoA snarky tagline used to say, "Informix-4GL is not 4G, and it's barely an L." I understand the sentiment, although in reality it wasn't that bad. What I4GL and its ilk accomplished was to make a passable bridge between SQL and a vanilla procedural programming language, which still had the usual SQL/procedural impedance mismatches, but was miles ahead of horrors like Embedded SQL/C (as you've alluded to with the remark about generated C's verbosity.) I did my share of I4GL programming and still remember it semi-fondly.
- open-source-ux 5y agoI've always associated Fourth-Generation Languages (4GL) with database products like FoxPro, Clipper, Clarion, DBase. They combined database and programming language in one package. They were powerful and more accessible to beginners than stand-alone programming languages. These 4GL database/programming products seemed poised to succeed in the web era. Think of building small or medium web sites with database and programming language all-in-one. Instead of succeeding, these 4GL products disappeared. I wonder why they failed to adapt to the web era - they seemed ideal for providing web-based database solutions. Those 4GL database tools made accessing data far more easily and seamlessly than the solutions today. Also, I suspect there was some snobbishness amongst programmers who didn't view these products as 'real' programming languages. Today, we have clumsy, glued-together solutions for web development with databases. Don't believe me? See this recent discussion on SQLite on HN [1]. I sense that lots of posters and readers in that thread are looking for a concurrent database that is simple and easy-to-deploy and turn to SQLite even when it is not designed for concurrency. [1] Have you used SQLite as a primary database? https://news.ycombinator.com/item?id=31152490 https://news.ycombinator.com/item?id=31152490)
- h2odragon 5y ago> I wonder why they failed to adapt to the web era At the beginning of the web era; Microsoft owned the software market and did not believe in the web. MySQL and PHP were the successors do the "4GL" databases, all the commercial efforts to compete with them ran into the brick wall corner of "only M$ may make money" vs "free".
- bitwize 5y agoIt was more than a question of Microsoft. Microsoft itself fielded two applications in this space: Access and FoxPro; both went on the wane as the web took over. There were a number of factors at work: 1) The rise of n-tier architecture. Clipper and dBASE do not scale well past a single PC. Once you have use cases that mandate multiple (kinds of) clients, separating the concerns of storage, business logic, and presentation starts to make a lot of sense. 2) The fall of ISAM-style "navigational" databases and the rise of relational databases and SQL. The programming advantages of xBase are sapped once you stop thinking of iterating through rows and start thinking in terms of queries. 3) Object-oriented programming became trendy in the 90s, and with it, ORMs. This added complexity to the programming model and didn't dovetail well with xBase's BASIC- and Pascal-influenced procedural model. There were a number of web application products like ColdFusion that flourished in the 90s and early 2000s. But to your point, open source ate most of their lunch. Microsoft lasted a bit longer, but ASP and ASP.NET have had to make a retreat into the corporate/enterprise space. And of course now the latter is open source.
- ochrist 5y agoMy favourite is NATURAL: https://en.wikipedia.org/wiki/ADABAS#Natural_(4GL) https://en.wikipedia.org/wiki/ADABAS#Natural_(4GL) It looks a bit like COBOL, but makes it much more fun to code on a mainframe. Ah, I miss those days ...
- papandada 5y agoMy only personal experience with this term was FOCUS, which in the hands of Information Builders got wielded as a marketing term and felt kind of like saying it was "a space age language" (new and modern! ... In the 70s). Not sure if anyone out there has experience and can change my view, but the language seemed a bit...wildly rogue, opinionated, idiosyncratic, cavalier, and I avoided it as best as I could at that client.
- CWuestefeld 5y agoLong ago, as a summer intern, I had some brief exposure to FOCUS. As best I can recall, I found the environment pretty cool. But I was constantly stymied by having to use an IBM 3270 terminal, which insists that Return and Enter are different things, and Enter is in the wrong place.
- lebuffon 5y agoParallel History? :) Circa 1968: "For fun, he [Moore] also wrote a version of Spacewar, an early video game, and converted his Algol Chess program into the new language, now (for the first time) called FORTH. He was impressed by how much simpler it became. The name FORTH was intended to suggest software for the fourth (next) generation computers, which Moore saw as being characterized by distributed small computers." https://www.forth.com/resources/forth-programming-language/ https://www.forth.com/resources/forth-programming-language/
- CWuestefeld 5y agoBack around 1993, plus or minus, I was working for a company whose name you'd recognize but I won't mention. We had an essentially failed project that they wanted to get back on its feet by changing to a more conventional platform. But which platform? We had a few contenders: PowerBuilder, Gupta SQLWindows, and good old C++ (using Borland's OWL framework, iirc). So they divided us up into separate teams, each to try a small proof-of-concept with our respective assigned platform, seeing who could accomplish the most in a month. I was on the SQLWindows team, and we managed to implement the most of the PoC project. But when us developers got together and compared notes, we found that although my team had won at the finish line, the details told a different story. The C++ team finished 2nd, but if you looked at the specifics of our progress, my team got off to a running start, while the C++ team had to build a bunch of infrastructure first. After that, their velocity was much higher than our own, so if the PoC test had been extended for another week, they'd have wound up the winners. We had drawn this all out on a whiteboard, with the intention of explaining this to management the next day. But when we got into the office that morning, our whiteboard had been erased, replaced with just "SQLWindows", and management told us that whatever the results, it had been decided to go with SQLWindows. I cannot deal with office politics.
- acegopher 5y agoI haven't heard "Borland's OWL framework" in over 20 years. Wow, that brought a flood of memories and nostalgia back. I used Borland products starting with Turbo Pascal back in the 1988-1992 time frame before switching to Microsoft C/C++ and MFC. Thanks!
- dehrmann 5y ago> PowerBuilder, Gupta SQLWindows, and good old C++ Was there any sense in 1993 that C++ would still be alive and kicking in 2022, while most people wouldn't have even heard of the others? Half the lesson is just "choose boring tech."
- CWuestefeld 5y agoGood question, because from 30 years later, I think you're right. But my recollection of the zeitgeist then was all about progress. The trend of the computer industry was always about upgrading, whether that's your hardware, or your OS (this was in the midst of moving from DOS to Windows 3), and there were tons of examples of important languages being left behind, like COBOL or FORTRAN. And prejudicing the decision against C++ were other related but separate technologies that had led to the failure of the project's original inception. The VP in charge of this major project (it was upgrading the company's core customer tooling from DOS to Windows) had us trying to do all kinds of crazy things. CORBA comes to mind, although I don't recall the details, and trying to make the entire architecture being data-driven. So there was a sense - not entirely unfounded - that C++ pulled in too much complexity, and we needed to shift gears to something much more straightforward. But I do recall realizing even as the decision was being made that the kind of simplifying abstractions that these 4GLs gave us may be great so long as what we want to do is "inside the box", but stepping out of the box leads to greater pain than if we'd been trying to accomplish it with conventional tools. Of course everyone realizes this, at least today. The difficulty was an management believing that the entire application, or nearly all, could be built inside that box, and that product owners wouldn't demand special and fancy behaviors. So I remember spending a good deal of time (and fun!) writing wrappers around Windows message handlers, with their LPARAMs and RPARAMs and the challenge that entails, so that other SQLWindows developers could do these things - whereas the C++/OWL path is designed to deal with such stuff natively.
- avighnay 5y ago4GL was a buzz word in the late nineties when I entered software profession. It was pushed by ERP (Enterprise Resource Planning) software majors of that era such as SAP & BaaN. Even though such software are the core of an enterprise today. Many technologies that they pioneered did not gain mainstream adoption after the entry of Internet software companies such as Google/Facebook/Amazon. Take for example what is now a buzz "Low code No code", it is a poor ghost of Model Driven Architecture (MDA) - https://www.omg.org/mda/ https://www.omg.org/mda/ . Enterprise software always wants to push software to the realm of standard components and modules. That cycle was broken around 2010 due distraction from the smart phone wave. Other techs of that era - ESB, WSDL, SOAP, SOA, UDDI, BPM, Business Rules, EDI, Data Mapping (all are almost but forgotten). Many of them are getting re-bottled e.g. Microservices Enterprise software has not had any major breakthroughs since. Glamour of new tech from Internet giants who invent it for their specific purpose is pushed more often than not, on to enterprise systems by other software vendors/consultants pouting it as the new and best. This has made standardization almost impossible and hence kept software always in the "handicraft" mode.
- exdsq 5y agoModel-Based Software Engineering still pops up in some environments, like LabVIEW or whatever that Matlab one is (they use it at NASA on some of the critical code, name escapes me). I've done some pretty cool things with Model-Driven Testing but never had a chance to use it as part of my job. GraphWalker [0] for example lets you build a model of an application where nodes are states and edges are actions to get 100% automated coverage (not No Code, but Cool Code). I used it to test HackerNews once in my free time combining it with the Page Object Model in Selenium which worked surprisingly well. You still need to build the framework and now an additional model, but you get all the tests for free. [0] https://graphwalker.github.io https://graphwalker.github.io
- Jtsummers 5y agoMatlab Simulink, probably. It's actually pretty neat, but I haven't touched it in over a decade now. It was useful for our embedded systems to have an executable model versus a prose specification document, and then it did get used to feed into the testing routine. Since the models were simpler to understand, confidence in them was higher. Differences in test results could be readily determined to be problems in the system and not the model after a quick analysis of the model ("Yep, that's supposed to be X, not Y" or "Nope, Y is correct, that's an error in the model here.").
- Mountain_Skies 5y agoSCULPTOR was heavily advertised in some computer magazines when I was a kid. I had no idea what a 4GL was but the ad copy sure convinced me it was going to be the greatest revolution in the history of computing. Luckily, like most language products of the time, it was too expensive for a teen hobbyist to afford and I didn't go down what would have been a rather shallow rabbit hole.
- lambic 5y agoMy first programming job was working with Data General Business Basic which was marketed as a 4GL but probably doesn't fit the definition these days. It took high level code and generated really ugly pure BASIC from it.
- zabzonk 5y agoNomad/2 - https://en.wikipedia.org/wiki/Nomad_software https://en.wikipedia.org/wiki/Nomad_software Never used anything more productive than this - mid 1980s, IBM 4381 VM/CMS.
- Decabytes 5y agoI know all languages evolve over time, but it seems like languages on VMs like Java have the ability to radically reinvent themselves while not losing compatibility with old code. For example the improvements/differences in ideology from Java that are explored with languages like Kotlin, Scala, and Clojure.
- chmod775 5y agoI don't see what is special about VMs that would impart any exceptional ability to reinvent a language that (compiles into something that) runs on it. As opposed to what? There's more "modern replacements" for the C language that are backwards compatible with existing code/binaries than I can count.
- remexre 5y agoOftentimes there's some optimization that it'd be really nice if you could perform, but it's possible to write code that the optimization would result in a miscompile of without analysis that's too hard to do without killing compile times. (And often, popular large frameworks do all these terrible things hundreds of times per second!) By compiling to a VM like the JVM, you expose the opportunity for speculative optimizations to run and be falsified at runtime without affecting correctness. This isn't a silver bullet, but can certainly be useful for an optimizing compiler developer.
- dokka 5y agoI don't know if this counts, but I built so much software in Access '97. Mostly for small businesses and individuals. I could build a whole inventory management system in a weekend(a simple one anyways). It was phenomenal. Once I learned Java and SQL(how to correctly use SQL, lol) I quit using it as much. But sometimes I still prototype software in old versions of Access just to model everything out.
- hestefisk 5y agoLow-code, no-code etc I sometimes think is a regurgitation of 4GL. Am I right?
- aryehof 5y ago4GLs live on through environments like SalesForce and Zoho Developer. The web and cloud ended the era of the desktop and local client server 4GLs in my opinion.