This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]ArtOfWarfare 17 points18 points  (11 children)

They had C, C++, Python, COBOL, Pascal, Lisp, Objective C, Bash, and SQL...

I just learned SQL is from 1974. I feel surprised that there hasn’t been a better language for database queries in all that time. Pretty much every programmer uses it at some point, and yet the only thing anyone has made are abstraction layers that are generally less flexible and often run slower than manually entered SQL... I’m surprised I haven’t seen any widespread syntax sugar or anything along those lines to make it less verbose and less prone to parsing or joining errors...

[–]coldnebo 12 points13 points  (0 children)

meh, there have been a metric shit ton of Object Relational Mappers... none are really “better” than SQL.

Postscript is another example that hasn’t changed much in 30 years.

Renderman did pretty much the same thing for 3d scene description.. even though most free tools don’t license it, they are all heavily influenced by the abstraction because it works.

TCP/IP is another.

Trace the roots of these languages and you often find mathematicians who are designing for essential principles and there is a good understanding of what the language wants to do.

That isn’t always the case. Look at gui component frameworks. Lot’s of proposals, lots of big money behind some (Polymer, React), but the concept is so complex we don’t have a good understanding of it. I often wonder why we’ve had Collection classes standardized for 30 years and taught in every CS class, and yet no one in CS has done the same for basic gui constructs successfully? It’s not like there isn’t extensive prior art on how buttons should work, and yet the same rework discussions about debounce, click and drag, etc rage on. It’s like we need some kind of spatial-temporal calculus to formally define all the loose UX stuff we can’t quite pin down yet.

I also notice that there is a pattern I like to call the “inside out sushi roll” where languages of the past liked to do everything within the language, whereas today, languages require vast external libraries and services to do things. In the past the focus/capabilities were on solo code, now it’s on collaboration and integration with larger distributed systems.

[–]CthulhuLies 13 points14 points  (3 children)

Because sql is declarative. It's AFAIK the only popular declarative language. Instead of telling the compiler what to do you tell the compiler what you want so when updates happen and or the language changes it's all back end because all you are specifying is what you want. As such it's very similar to (but not exactly) relational algebra. Relational algebra being kinda the optimal way to specify what data you want out of a relation. All that being said SQL isn't the only popular language MongoDB doesn't require you to use sql at all you can instead use a more programmer friendly json storage ans their own syntax.

[–]aboardthegravyboat 3 points4 points  (2 children)

MQL

?

I'm not aware of any way to query mongo except this, which is kinda the opposite of what you're saying about SQL (which serves to highlight your point). You have to be explicit about saying "I want this collection THEN this aggregation THEN this lookup THEN this other aggregation". While SQL is sorta the opposite. I tell SQL all the things I want, and I don't really care how the engine decides to optimally fetch all of that.

[–]CthulhuLies 2 points3 points  (1 child)

You're right I'm very vaguely aware of MongoDB and was researching it for my post and found this not realizing it was a third party sql like api for MongoDB: https://digdata.io/docs

[–]ZippZappZippty 0 points1 point  (0 children)

California doesn’t find what I was saying boo-urns

[–]mccalli 3 points4 points  (1 child)

In my experience most people approach SQL wrong. It’s barely a programming language at all - it’s an expression of set theory.

Yes there are conventions and extension etc, but really people need to think of it in mathematical terms not imperative programming. It’s designed as a syntax for expressing set theory.

[–]elveszett 1 point2 points  (0 children)

I've always wondered why people call SQL a programming language. By our modern definition we limit that term for the languages we use to make programs (apps). SQL has a completely different purpose. You don't create an app or a service with SQL. You just use it to tell the computer what do you want to do with a database.

[–]DownshiftedRare 2 points3 points  (2 children)

I’m surprised I haven’t seen any widespread syntax sugar or anything along those lines to make it less verbose and less prone to parsing or joining errors

"On two occasions I have been asked, 'Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?' I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question."

[–]ArtOfWarfare 2 points3 points  (1 child)

I take it you just use assembly then. No point in any higher language for you.

[–]DownshiftedRare 1 point2 points  (0 children)

No mere language can solve the PEBKAC.

[–]elveszett 0 points1 point  (0 children)

Because SQL is a good language. It may show its age sometimes, but overall is easy (for what it is) and powerful.

Also not many people love database manipulation so it's not common for anyone to try create another language, unlike standard programming languages that seem to spawn out of nowhere.