Are there any good resources to learn ABOUT programming, but not HOW TO program?

Due to the fact that I know more about tech that the average person, I’ve fallen upwards at work to an analyst position between business and IT. I know enough, but I’d like to expand my knowledge so I’m not just smiling and nodding during meetings. The problem is, If I search Google for “learn about programming,” I just get a bunch of results about learning to code. I don’t want to learn to code. I know some coding (mainly VB.NET) but I have no interest in being a coder. I just to know things like, “What’s JSON?” “What’s a SQL server?” “What are the difference between various coding languages and why are certain ones chosen?” in fairly simple English.

That’s a big question unfortunately. It’s sort of like saying “teach me about repairing vehicles.” That could mean motorcycles, bicycles, cars, or cruise ships. Each would have it’s own set of tools and terms.

Maybe a glossary like this would be a good starting point: https://panoply.io/docs/glossary/

Otherwise I would just write down any terms you don’t understand and search Wikipedia for them, or have a trusted coworker explain them.

Try https://www.w3schools.com/

Actually it doesn’t sound like you are as interested in learning about “programming” as you are in learning about systems architecture, at a high level at least.

It’s less “I want to know how to repair vehicles” and more “I want to know what my mechanic is talking about when he says the Johnson Rod is broken.”

That looks more like “how to.”

Yeah, that sounds more like it. I think part of the problem is I don’t really know what to look for in the first place.

I think I agree with control-z that you should just investigate each individual term or topic that you come across that you want to know more about. The three example questions in the OP come from widely different areas of software engineering, so I don’t think you’re going to find a source that explains those particular topics without also explaining a thousand other things that you’re not interested in.

The “Computerphile” youtube channel would seem to be the sort of thing the OP is asking about, at least the episodes that aren’t about hardware or cryptography.

I mean… StackOverflow has a lot of that, if you’re willing to sift through some bullshit, and yes, some code. You can’t dodge code entirely if you’re trying to understand why different bits of code are good for different things.

For $15 a page I would be happy to answer any of these questions, in English, with as much or little depth as you want. But I bet you could get similar or better answers for free in General Questions on this very site.

My favorite advice to give people is first buy this book which is about architecting towns and cities, not programming. Once you start to enjoy thinking about things in composites of patterns, you might find it easier to think about elements of computing. Or you might not, but either way, it’s a nice coffee-table book.

I will give you a freebie on this one and give the most common reasons coding languages are chosen:
[ul]
[li]It’s the only language that fits this niche (runs in a web browser, runs on certain hardware, runs on a certain database)[/li][li]Helps translate between different systems with the least amount of effort[/li][li]Everyone else is doing it, don’t reinvent the wheel[/li][li]I’m reinventing the wheel because it looks fucking rad on my resume[/li][li]It’s compatible with the reinvented wheel that the previous idiot wrote[/li][li]Our developers already know this language[/li][li]Our developers want to learn this language[/li][li]OK, nobody really wants this language, but somebody high up decided we needed a new language and it’s close to what we already know[/li][li]This language will help me get a job somewhere I actually want to work[/li][li]Other pointy egghead reasons not worth discussing[/li][/ul]

JSON is a standard way of passing data between programs. It comes complete with definitions, so nobody has to guess that columns 3-5 is the id and 6-25 is the name. The two programs have to agree on what the pieces of data are called, but if they do, it doesn’t matter what order they’re in

This is a Microsoft’s database program and it often refers to the software, the database and the machine that runs the database and provides the data. SQL stands for “structured query language” and is (mostly) standard across different database systems.

As the good ship HMS Irruncible implied, there are a lot of reasons to choose languages that are unrelated to the actual needs of the system. And a lot of languages out there will accomplish the exact same tasks, but with some better at certain tasks than others.

Nitpick:
Microsoft has an SQL implementation, but SQL is not Microsoft’s database program. SQL was originally developed at IBM in the early 70s, before Microsoft was founded (originally called SEQUEL, for Structured English QUEry Language, but SEQUEL was already a registered trademark in the UK). Microsoft’s first SQL server was released in 1989.

Seconding Stack Overflow, the SDMB (GQ is actually a great place for tech questions), and also putting in a vote for the AskTechnology subreddit. Seriously, just ask; people are usually happy to explain basic concepts. Also, if you prefer video, YouTube and Lynda.com are both great for overviews. Lynda is a really great resource for learning skills (or overviews), and definitely worth the money.

In regards to your questions, I’ll also add some bigger-picture answers to the ones above:

Computers, like people, music, and math, use a lot of different languages and notations for different purposes. Not every computer language is a programming language. You can broadly divide computer languages into a few big categories:

Programming languages provide interactivity and convert inputs (whether from humans or other computers) to outputs (apps, websites, car ECUs, spaceship controls). .NET, JavaScript, C, Python, PHP, etc. fall into this category. Most popular languages are generalists and can be used across many industries, especially in the age of the Web where JavaScript is dominant (it’s the universal programming language that every web browser understands). There are also domain-specific languages, such as FORTRAN/COBOL for business stuff, R for statistics and sciences, Lua for video game addons, etc. Not going to get into the argument of which language is best for which purpose; suffice to say there’s a lot of overlap and people can get pretty religious about it. If you learn one programming language, others are easier to pick up, but it would still take months or years to reach proficiency.

Markup languages describe a document or a bunch of data, but don’t really “run” anything by themselves. These languages need some other program to digest them and produce output. For example, when you bold something here with the ** tag, you’re using a markup language. But it’s the SDMB’s backend server that transforms that into another markup language, HTML, which your browser then analyzes to display a webpage. A markup language is a type of data store – literally just a bunch of data, whether it’s words in English, a bunch of numbers in a spreadsheet, or arbitrary data. JSON is another kind of data store (I suppose it’s also a markup language, but its main purpose is data storage and transmission), specifically made to be easy to work with in JavaScript. But due to its popularity (again, JS is the universal language of the web), many other languages can interact with JSON now. XML is another common format (used to be dominant before JSON), and simpler varieties include .CSV files, rich text files (.RTF), newer versions of MS Word files, etc. Even simpler vector graphics (logos and such) can be described in markup languages by converting shapes into complex geometries of lines and polygons, but that’s sort of an edge case. Markup languages are usually pretty simple to learn (and are rarely hand-written anyway). Their main function is to pass data, in a standardized way, between products from different vendors.

Query languages like SQL are meant to interact specifically with data stores, especially complex ones like SQL databases. SQL stands for “structured query language”, and the “structured” part means it’s not just a flat table of rows and columns (like an Excel sheet), but a multi-table collection with relationships between them. For example, a retail business might have different tables for their employees, suppliers, product inventory, invoices, and transactions. A structured database joins all these disparate tables together, so that an analyst can ask questions like “Which employee sold the most widgets from this supplier this year, after taking into account refunds and ignoring unpaid invoices?” There are other query languages but they’re pretty domain-specific and SQL is the most common one, used in many competing databases from different vendors. MS SQL Server is just Microsoft’s offering; other common SQL databases are MySQL, MariaDB, PostgreSQL, Oracle (terrible company), SQLite, etc. Basic SQL is more or less the same across products, so once you learn SQL, it’s easy to pick up any structured database, but there are idiosyncrasies to work around.

The Web is a hodgepodge of the above languages. The average older website will either run on a “LAMP” stack (Linux, Apache, MySQL, PHP) or a Microsoft stack (.NET), but the concepts are similar. There is some operating system (Linux or Windows) which offers basic hardware, networking, and file management functions just so that everything else can run; ideally it just works and gets out of the way, in reality it almost never does. There is a database, usually SQL-based, which stores data (MySQL or MS SQL). There is a web server like Apache or MS IIS, which speaks HTTP (an intermediary language language that web browsers use to talk to web servers). HTTP rides on top of TCP/IP, the networking language that routers use to talk to each other underneath HTTP. Then a serverside programming language like PHP or VB.net (translated into ASP.net) combines server-side code and HTML markup to produce web pages. The web server sends the compiled (processed) HTML to web browsers like Chrome/Firefox, which then renders the pretty web pages you see.

One major nuance to the Web is JavaScript. Because of the messy, organic way the Web evolved over decades and across many products from different vendors, JavaScript became the de facto standard supplement to serverside programming. It allows additional programmability on the client side (meaning it runs on your computer, inside a security sandbox, instead of the remote web server). In the early days, JavaScript was impractical for anything but very simple use cases (like changing font colors, or showing a popup message). But as computers got more powerful and JavaScript and browsers got faster and better, it’s taken over a lot of things that traditionally would’ve required PHP or ASP.net other nearly-extinct languages (like ColdFusion). JavaScript is far from perfect, but the options before it were even worse: ActiveX, Flash, Shockwave, random browser plug-ins, etc. Now JavaScript can do pretty much everything, if mediocrely. Hence the popularity of JSON.

Today, there is a mass paradigm shift in progress, where a lot of newly written web apps (just a fancy term for a highly interactive, complex website) are written heavily in JavaScript, and sometimes JavaScript is used on the serverside too (not necessarily because it’s the ideal language for serverside stuff, but because that’s one less language for the staff to have to learn and maintain). The “stack” itself is changing too, often in favor of much lighter and faster servers and modular “workers” that live and die short lives in the cloud, each instance of which only runs for a few seconds. But anyway, that’s getting probably too far into the field of systems architecture.

Why is it all so complex? It’s just a lot of competition from a lot of different vendors and open-source movements. There is a lot of overlap, redundancy, idiosyncrasy, and of course tradition and religion. Modern IT is hyper-specialized and hyper-diffused at the same time. To use a car analogy, imagine if governments didn’t set highway and vehicle standards, and every household could build their own cars in their backyards, most of which would drive on the roads, some of which would drive under or around it, some of which would randomly blow up, some of which are designed to stop others from blowing up, etc. That’s IT, and the Web specifically, today.

Well then you should search for material on your specific car and skim it. You’re unlikely to find one that is surface level but also explains what the Johnson Rod is, so you just have to decide how much of the chapter on timing fans and Johnson Rods versus Smith Splines you personally need.

Books about programming, as you say, are usually geared at people who know one or more relevant programming languages.