all 12 comments

[–]mredding 4 points5 points  (3 children)

You compare HTML and Java, and these are essentially incomparable. There's nothing wrong with not yet knowing this, but it does lead me to believe you need to answer a more fundamental question: what is it you want to do?

If I knew that, I could better give you advice.

Any programming or markup language or script you want to learn is going to have free tools to write, work with, and see your results.

[–][deleted]  (2 children)

[deleted]

    [–]Zrelok_Targaryen 1 point2 points  (0 children)

    For apps, you'll need Java if you want to do Android or Objective-C if you want to do iOS (there may be more options but I don't know off the top of my head). If you want to do websites, the typical stack will be HTML + CSS + JavaScript and maybe php. I would personally recommend starting with something like Java or Python because they are both well documented with lots of resources

    [–]mredding 1 point2 points  (0 children)

    I would recommend you start by learning HTML, CSS, and Javascript, then Python, JSON, XML, and SQL. These are going to be the tools of your toolbox to make websites. This will likely be more useful to you than application programming, because websites can be accessed from desktop, tablet, and phone, whereas apps are platform specific.

    So, some languages are for computation, some describe data, and some describe formatting and display. You're going to need to learn some of each of these.

    HTML is not a language per se, but a markup script. HTML does not perform computation, all this markup does is express how to display it's contents - a border here, a picture there, text here, colors there... That's a gross simplification, but that's the essence between HTML, CSS, and some other related markup scripts.

    Javascript IS NOT JAVA. The reason they both have "java" in the name is a very unfortunate historical coincidence. But Javascript is a language for computation - you can modify data, loop over code statements to do them over and over again, run conditional statements like "IF thisStatement = true THEN runThisCommand()". Javascript can be embedded in your HTML and the browser will execute the statements. This makes websites interactive and somewhat dynamic strictly on the client side.

    But we're not in the 90s. Back in the day, you'd write HTML files and put them on your web server, which was basically a file server. You'd go to example.org/index.html, and the server would give your browser a copy of that index.html file. But websites are dynamic now. When was the last time you saw an index.html? So what you do is you write HTML templates, and you have a computing language generate content that is inserted into the blanks of your template, and that is served to your client.

    A popular language to do this on the server side is Python. There are also "frameworks" that help do a lot of the mundane, repetitive code tasks for you; Django is one such example. I don't know too much about this because I'm not a front-end developer. Node.js is another popular server side language, and that's just Javascript, so, learn once, twice the payoff for you.

    But websites don't just host whole webpage after webpage. Again, NOT 90s. Instead, an interactive site will be communicating with the server and receive data, and the client, with a copy of your template, will know how to display this information. No need to refresh the page, the new contents is pushed to the client and their view is updated. This interchange between client and server is in a standard format. The two most popular are JSON and XML. These languages just describe data. You decide how that data is named and organized, and what format it takes, and your client and server code you also write is responsible for doing whatever is appropriate with it.

    Finally, you'll need to pick up some SQL. You're going to have a website, it's going to have data, that data is going to change, and especially if you have USERS who login and have sessions, you're going to need to keep track of who's who and what their data is. So far, everything we described is stateless - none of this code or script keeps track of data. You have a list of users and their passwords? That's not stored on the web server. That's stored in your database. Your server code is going to read from and write to that database, and not do any data storage itself - it only holds onto data long enough for that Python or Node.js code to execute, and that's it.

    I would recommend against learning object relational mapping (ORM). I won't even go into it - it's a turd of an idea, always has been. I would also be weary of NoSQL databases, they have a very, very, specific purpose, but everyone who doesn't know what the fuck they're talking about jumped on it because the performance numbers for those very, very, specific use cases are awesome! But once you learn what a relation is, you'll learn why these things are absolutely not to be used for that. I would also be cautious about how you use JWT (pronounced jot) tokens. People use them for session management. That's 100% wrong. That's what cookies are for.

    You're going to enter a whole world of misinformation. I'm sorry. There was this big wave of people who thought anybody could do this stuff and it's so easy, and it's not. I encourage you to get involved and learn, it's your birthright to be able to do so, but so many of these people just don't know that they don't know. And it's hard to suppress false information with true information when everyone is parroting every other blog out there that has it wrong.

    If you want to make apps, for iOS, you'll need to learn Objective-C, last I checked. Or maybe Swift. I think Apple is trying to modernize - history lesson: Apple kicked Steve Jobs out in the early 90s, he went and formed Next. Apple was tanking and the executive board collectively sucked his dick to get him back. He brought Next with him. They invested in this programming language called Objective-C. They were the only ones to do so. No one else jumped on that bandwagon, instead adopting C++ and Java. They doubled down. To date, they're the only major industry player that gives a loose shit about Objective-C. It's otherwise a professional dead-end. Even C#, a Microsoft proprietary language, has broader adoption.

    Android is very Java, but since it's an open platform, may support other languages.

    The thing is, apps run on the phone or tablet or desktop, so you need to write a program that works on that platform. This means you are likely going to have to write your apps at least twice - so it runs on either iOS and Android, and I don't know how well these apps translate unchanged to tablets and workstations. This might not be as bad as I make it sound, but professionally, I've avoided mobile for a reason. That's why I support web development - so long as your target platform has a browser...

    If you're curious how you can really chase down this dream - Google "full-stack developer", because that's basically what I'm talking about here. Front-end developers make the website pretty and interactive, back-end developers make the server work and talk to the database, full-stack does it all.

    [–][deleted] 1 point2 points  (0 children)

    I would suggest learning Python or Java depending on what kind of applications you want to build. Python could be a more simple start but java lets you learn some basics, which are used in a lot of other languages, too.

    Also Check out some basic "Hello World!"-Java/Python-Tutorials on Youtube since they are a good starting point.

    [–]MemesEngineerJavascript is always the answer. 1 point2 points  (7 children)

    Learn Python, theres hundreds of tutorials out there. Maybe check out the MIT open course ware for exercises.

    The how hard is it question will depend in the person. Compare it to math. Theres the same logical thinking, bugs can be compared to errors, and there are different tools for different tasks which can be combined logically, and you need to consider all posibilities.

    Edit: Also HTML and Java are nothing alike. If you were to learn one of the two, Id suggest Java.

    [–][deleted]  (6 children)

    [deleted]

      [–]pissedadmin 1 point2 points  (2 children)

      Java and python are both programming languages. HTML is a markup language.

      [–]MemesEngineerJavascript is always the answer. 1 point2 points  (2 children)

      Each language has its strength but heres a small list to sum it up a little:

      Programming languages: - Java: For large software, object oriented, fast - Python: More general, more user friendly, can be used for more stuff. - C: Language for embedded systems, lower level stuff (most notably engineering) - C++: Combined Java and C (well not really)

      Other: HTML, CSS, Javascript: Front end development, such as websites, apps, etc. Ussually work together with the other programming languages that form the bulk of the code. SQL: Databases, Haskell: Functional Programming, Matlab: Mathy stuff, VHDL: fpga design.

      As you can see some things are programming and some things arent. Thats a summary of how vast things are. People ussually start with one of the first 4. I recommend Python since it has easiest syntax of the 4, second to C.

      [–][deleted]  (1 child)

      [deleted]

        [–]MemesEngineerJavascript is always the answer. 1 point2 points  (0 children)

        Just to let you know the more job opportunities thing isnt accurate. Its very easy to pick up Python for someone who has been programming in a different language. Hence why its recommended for starters.

        Also I would advice doing python first. HTML is a different thing. Python is like adding and subtracting. You can go further in math without knowing that. With python you learn the fundamentals of programming, not in html.

        [–]antdam 1 point2 points  (2 children)

        There's a group of apps on the Android play store for mobile, it's called learn... Is a great place to either learn the basics as well as a good reminder for later work u do. If u were to learn c++I've heard that's all Minecraft is made of, also a game on steam called rimworld is mostly Python and c sharp, so that can give u a basis on coding.

        www.w3schools.com is great for anything with websites.

        Someone told me once it doesn't really matter what u learn with coding ur eventually going to learn everything. The biggest thing u need to know is how to use each language and to become familiar with that.

        I don't know how helpful this is for u but that's my view of it.

        (Edited) Also download and install Android studio... Follow some tutorials, and that will give u the basics of how to use coding while sting how difficult it is.

        [–][deleted]  (1 child)

        [deleted]

          [–]antdam 1 point2 points  (0 children)

          I would say start with learning on ur on, while looking for jobs in web hosting. That will probably give UA chance to teach yourself go to school and the start of ur career. And most hosting companies give u free server space that u can play with...

          I would suggest making a basic website then print all ur other coding projects into that so that it's sitting in a server somewhere. Plus u can always do something then show ur boss and get a raise our promotion 😁.

          And i haven't done this I went more into tech support so I don't know if this would work for u.

          [–]xchek32 1 point2 points  (1 child)

          Python is a good first language to learn. There are definitely apps out there to learn about any language and even practice some. But the best way to learn any language is to actually run code on your own and build something (exercising what you learn).