This is not a good idea. Even worse than a BSc. which while it may cost more and last longer, at least proves you can turn up on time and commit and manage that time enough (inbetween getting pissed) to have earned that degree.
Look up the LAMP stack. It's pretty straightforward even though nerds argue over its definition. Pretty much no one will argue with this, at its most basic:
L - Linux/OS - doesn't even really matter what distro.
A - Apache - Server software.
M - MySQL - Database software.
P - PHP/Perl - Programming software for CGI stuff to translate.
There's nothing stopping you developing on the WAMP stack either if you are starting out and Linux is your weak spot.
W - Windows/ OS
A - *
M - *
P - *
In fact when I developed on the LAMP stack (just basic and some not so basic DRUPAL), I developed in tandem on the WAMP stack. Sounds glorious! All it means is I went back and fore and tested my shit on different OS's. You pick an OS you need to and stick to it. Test on the other. No need to be clever.
The great thing about this setup is that it is fully testable on either platform, because it will be rendered as a web page at the end of the day, and no matter what the OS reading it, the whole fucking point of doing it is that it is 'universal'. Mac users can read those web pages and fill out those CGI forms as well as any other OS user.
For some reason I found it easier to develop using the LAMP stack, i.e. in Linux (LMDE), whilst not really being a Linux mastermind at all, just a very basic user. Had some better tools and I was just having fun anyway compared to windows. I had some problems maintaining the distro when it updated and got out of my depth. I was not able to get help from the Linux community. This is a common problem. A lot of devs just stick with windows because it's easier and you can get help easier. You only really use Linux if you have to or if you are learning (like I was). Just my perspective. Not gospel.
You can set up a local server on your home desktop/laptop and you will use this for testing before you 'Go Live', that is to say, start uploading things to whatever service provider you have chosen to host your site. First things first, you will need a domain name, such as 'kiwifruitz.org' - you check to see if it is available and if it is you register it. Namecheap provide such a service for example. A few bucks a year depending on the name.
But you will also need server space to host your domain 'kiwifruitz.org'. There are a lot of these. In fact there are so many that there are whole webmaster websites dedicated to keeping up with it all where you can also get lots of other info as well. I won't tout any here. Some names are household names, others are fly by night operations that may or may not be absolutely perfect for your needs. You need to figure out bandwidth requirements, but for a test website just buy the cheapest damn thing you can find, within reason. As long as you are not hosting porn or gore you shouldn't really fall foul of any terms and conditions. (I can hear null sobbing slowly and uncontrollably in the background here).
This server space or ISP is also going to balance out at a few bucks a month. I'm sure others will correct me if I got it wrong. It's been a while now and the game might have changed. But probably not by much. Just factor in that you will need to pay 'something' for this.
Ok. So you got your spiffy new domain name: 'kiwifruitz.org' and you have it registered for a whole year or more (costs more money) and you also have an ISP that will have a physical server where you will upload your PHP/Perl/HTML/CGI scripts to. Ditto it costing more for more years, and of course, great discounts are available if you buy in bulk! Then again, if it's a smaller ISP and also a particularly good one, it may get bought out by the end of the year or two by bigger entities, and you are in some version of SOOL. Just buy a year then renew.
To recap:
L - Linux OS
W - Windows OS
You will have decided this first and foremost. It's the first stage of the stack. The most comfortable one for you, you will have chosen.
Hint: Now is probably not a great time to learn Linux. Then again, it may be the best time of your life to learn Linux.
So you have your OS: Linux/Windows/WTF
Next pick your server that you are going to install.
A- Apache
Probably. Let's just go for that for now. There are bundles that help you to install both the Apache server software itself plus also any required modules for CGI stuff iirc. You'll need to read up on this. But the basic idea is to set up an actual real life real time server on your local machine. This will be used for testing before you 'Go Live' on your paid for server space.
It's free software keep in mind. Apart from the few bucks to register your domain name and the few bucks to maintain your 3rd party server, none of this costs a penny.
Now we come to the
M - MySQL
The database. This particular one is named after monty widenius' daughter 'My' -
"
My" of MySQL is
Monty's daughter
No matter. You may not even need a database at this point to get things up and running with a basic web page if you have never done this before. MySQL is also free. You can also use other databases, but this is the classic one for the LAMP stack. It runs a search and query langauge 'SEQUEL' - SQL in other words. Structured Query Language. It is how you
populate and
query databases to
store and
retrieve data, respectively.
Are you getting the picture yet?
Each one of these things is the whole leg of the elephant. You can't even eat one of them in one go. Buckle up buckaroo, things are going to get much more challenging.
Let's keep it simple. You've gone for windows because you are familiar with that. You can learn Linux later. You've chosen the standard latest distro of Apache for your server. You've decided to use MySQL as that's a standard as well, even if you won't be using it yet, or don't really know how to use it. You will need to know basics at some point though.
Now we come to -
P - PHP/Perl
This is the language used to interface (hence CGI - common gateway interface) between the web page and server and database. Perl can render HTML even, which is a common thing it is used for. It can also be used to execute 'forms' where maybe you knock up a nifty little temperature translator from Celsius to Fahrenheit all on the client (end user) web page. You can use both languages. In fact you can even use C or C++ for CGI if you need the speed and you know what you are doing. Perl is an interpreted language so it has some performance penalty, but it's generally fast enough for what most people want to do, because it misses out the compilation stage of languages like C (which make them faster because they are 'pre-compiled' beforehand and not 'on the fly' at runtime such as Perl is).
Perl is almost as fast as pre-compiled C though, the end user just takes a bit of a hit compared to you that had to take the time to compile it. I wouldn't sweat this right now. I also expect to have started some holy war with my ignorant comments. Don't listen to me. I really do NOT know what I'm talking about. And you can quote me on that.
But really this is academic shit. Very few people starting out are going to be using C for the needs of their CGI.
One thing you will need however, and it's a bit of a gotcha, is the fact you will need to know HTML to a rudimentary level, else all this is going to be painful for you. It's the weak link in the chain. By all means learn all the stages of the LAMP stack, but for pity's sake make sure you can knock up a half decent post on kiwifarms first. The html tags are there. You just have to find them. Experiment. I don't mean shit up the thread, I mean preview until you have something that looks good. Nice big headers, spaces, paragraphs, basic shit. Knock yourself out with listed items and strikethroughs. This will save you much frustration later.
I assume you are at least faintly acquainted with HTML.
In fact, if I were personally tutoring you, I would be a complete bastard to you the first day or two till you grokked how to handcode a basic page of html (HtmL is not case SENSItive). It would be painful at first, then like water off a duck's back. You can use editors all you like, but there is no substitute for knowing how the basics work.
From there it gets to be a fucking nightmare because we all end up using editors sooner or later and they are a fucker to debug when just some small portion of code does not render properly on the browser. This is why a lot of hackers/crackers do not like programming web pages or find it tiresome. It's hard enough debugging C++ but it's a strict language and there are tools for that. HTml iS A fuCKINg freE for All. And if it's just your eyeballs doing the dirty work (as they will often have to), it's a pain.
Btw, there are packages like IndigoPerl or ActivePerl* that help with integrating that in to your local machine desktop server thing. At least there used to be. Maybe theystill exist. Maybe something else is better now.
IMPORTANT: This article relates to AcitvePerl up to version 5.26. From ActivePerl 5.28 onwards, ActiveState sadly discontinued their PPM tool which allowed
mid.as
But I'm sure that there is something out there that can help automate what can be quite a daunting task when you first want to put the bare bones of Perl or even JAVA on a machine. Let's not talk about JAVA. Write Once Run Anywhere.
Where as Perl is: Write Once Read Never.
Little Perl joke there and if you ever got deep in to reg/ex (regular expressions) you would understand it if you came back 3 months later to maintain the code. Fuck it, 3 minutes later in my case!
Perl, all the power of C and with all the ease of use as C.
Nother little joke. Have you tried learning C?
Two books you need:
1: K&R
2: ABC (A Book on C)
C is a very terse language. Very powerful. Very bare to the metal. They even use it to write compilers. C++ is a superset of C. JAVA is based on elements from C++ such is Javascript.
Ah, Javascript.
Well, just like they left out you need to know htML to work on the LAMP stack, they also failed to mention you will need a certain amount of Javascript too. Love it or hate it. It's glue. It's a quick and dirty language but can be quite involved. People have written 3D ray tracing renderers in it iirc. Among other proof of concept stuff. It's still a nightmare though for what you will be using it for on the LAMP stack.
So let's recap.
You will need:
An OS (L)
A Server (A)
A Database (M)
A Language (P)
Linux/Windows
Apache
MySQL
PHP/Perl
Each of those is an abstraction layer again on top of the previous ones they sit on.
See the OSI model:
https://en.wikipedia.org/wiki/OSI_model#Layer_architecture
The very lowest abstraction layer would of course be the very hardware you are running on. The consequent layers would then build on that and work their way up.
I’ll try to answer the actual question of what a stack is.
In the Internet architecture (TCP/IP, OSI, etc.), protocols and software are often “stacked” on top of each other, as they depend on each other for support. For example, TCP provides reliable transmissions of data, on top of IP. The same goes for LAMP, your Apache server needs to run “on top of Linux”. Think of this “stack” as your favorite stack of pancakes, where each pancake is a different layer.
What does the term LAMP Stack mean? I have seen this reference in job postings, but I don't fully understand the meaning of it. I feel like in my development I use LAMP fairly commonly, but when I ...
stackoverflow.com
----
But you will also need skills in both HTML and Javascript. Or else not much of the rest of that is gonna make sense.
If you know nothing at all and are starting at the very beginning. Then start with -
1: HTML
2: Javascript
3: PHP
There's probably more PHP code in the world in boiler plate form that you can hack out from different templates. If not then usually PHP is easier to 'parse' than Perl (see my earlier pithy comment).
This is how many street shitting code monkeys work (and why most of the internet has stopped working altogether the last few years) - they take already created and freely available boiler plate code and hack at it till they get something that just about works, then they don't test it, but give it to their bosses, who then deploy it, without testing it.
Any good software engineer will tell you: Coding is just 10 percent, testing is 90 percent. Depending on whatever methodology used. But you get the idea.
This is why you put the Apache Server on your local desktop/laptop first and test test test. It's not even worth paying for a domain or ISP by this point if you are starting out. But do it anyway because by the time you do get ready to 'Go Live' and you have all your code handy, the last thing you want to be fucking about with is finding a suitable ISP.
This was meant to be a shitpost and not a mini-tutorial. And tbf it probably still is more of a shitpost than a mini-tutorial. I've failed again! I'm ugly mom, admit it!
But whatever you do, for the love of sweet little baby jesus. Do not go paying that kind of cash or getting in to debt for these bullshit bootcamps. There's a lot of spergs out there that will help you out for free and shits and giggles.
Little Addendum:
Kiwifarms is one of the most sublimely programmed websites on the entire fucking internet. This is without getting in to shit that I have no understanding of that Jewsh has to deal with like Dos attacks and whatnot. Just talking the coding, the framing, the representation, the colours even, the fact you can switch themes. It's seriously fucking impressive. If this boy isn't seriously autistic, he fucking will be by the time he's finished. Also keeping up to date with 3rd party forum software, jumping through hoops, things outside his control, rolling with the punches.
More than anything, it's hard fucking relentless work every minute of the fucking day. And what's worse, you couldn't really keep that up if you actually were autistic.
Kudos.
ETA: concept of interpreted vs. compiled.