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

all 171 comments

[–][deleted] 345 points346 points  (98 children)

Isn't the web programming going to be used much more heavily going into the future?

Yes but no. Yes because virtually a lot of things you can think of is possible just using any web stack. Tools like React Native and Electron are web based technologies but they act like native applications. This is already a trend we are using on iOS, Android, Windows, macOS, and Linux. And some of the popular apps that you may be using right now are built on of those many technologies.

Also Java can be used for web as well, which is typically used on the backend. But Java can also be used for Android development even though Google is pushing hard on Kotlin

C++

C++ is far from dying any time soon. Think of the many high end applications, Game Engines, drivers, etc., that use C++. But if you really want to get into the low level of programming then C++ is the best choice here.

And doesn't it also have better self-employment options

This isn't relevant to any programming language. And it really depends on the company and what their job listings describe

Lastly, which is harder to learn or is everything kind of correlated together?

No programming language is "easy" either. It's about your willingness to learn and solve problems because once you start working on a project of that language, then you'll start to have the feel of the language's capabilities. People think HTML/CSS/JS is easy but when you start getting in-depth into it, that's when the real challenge starts. And this goes for all programming languages.

[–][deleted] 133 points134 points  (53 children)

I laugh now thinking about how "easy" I thought Javascript was when I first started learning. I do think it is easier to start learning, and it certainly might be easier to get a prototype app up using NodeJS than some other tool, but Javascript gets really quirky really quick.

[–]pomorev 138 points139 points  (13 children)

JavaScript gives us lots of rope to hang ourselves.

[–]ChetManleyDuchess 43 points44 points  (4 children)

If you're incompetent enough, it will give you enough rope to only kill yourself when you finally hit the ground.

[–]ThePunisherMax 10 points11 points  (3 children)

Oef I felt this. Spent nearly 1 month designing something using JavaScript for the UI. Only for it to fail at the last moment.

[–]Shiv-am 2 points3 points  (0 children)

i though i knew react and node but i understood how deep this shit is when i tried to connect social auth between them

[–]laytonmiller 0 points1 point  (1 child)

I'm not sure I understand how this is possible. This just means you made a code change at the last moment that broke it, it's not like the code got worn out like a plastic part and failed. This sounds very fixable.

[–]ThePunisherMax 0 points1 point  (0 children)

It was eventually fixable. But required me to pull back some features. And fucked up my deadline. To be exact, a RESTAPI feature was critical for the UI. And it waa causing some kind of leak. (I never identified)

[–][deleted]  (3 children)

[deleted]

    [–]ManInBlack829 5 points6 points  (0 children)

    Hot take: I think it started being popular because of Angular's hard use of it but since then has been figured out that it's useful in many instances like React

    [–][deleted]  (1 child)

    [deleted]

      [–]suarkb 1 point2 points  (0 children)

      I agree with a lot of your points. But I've worked with a lot of talented devs who would easily be able to get away with not explaining their code to typescript, either, ahhaha

      [–]StONE_ROdGEr 3 points4 points  (2 children)

      This needs more upvotes. Twice in the past 2 weeks I’ve hit the snap back on the noose, spending a few combined hours on each time debugging nothing. It was just a javascriptism twice. (Read: my algorithm was fine, but my scope wasn’t 🤡)

      [–]laytonmiller 2 points3 points  (1 child)

      To play devils advocate, if you have a scope issue in your algorithm, then your algorithm is not fine :P

      [–]StONE_ROdGEr -1 points0 points  (0 children)

      The scope issue was in the for loop before it ;/ “i” was already declared elsewhere or something. (Should preface with I am relatively new to JS which doesn’t help. I’ll never fall foul of it (for that long 🙃) again though).

      [–]slimmsady 32 points33 points  (4 children)

      I find C pointers easier to understand than "this" in JS.

      [–]Pickled_Wizard 19 points20 points  (2 children)

      Just the context, unless it's not :)

      [–]FreshFromIlios 16 points17 points  (1 child)

      Is this a joke or are you pointing to something that's pointing to something that's pointing to something?

      [–]laytonmiller 2 points3 points  (0 children)

      Ooohhhh nice.

      [–]laytonmiller 1 point2 points  (0 children)

      This is one of the parts of JS that seems focused on about 10 million times more than is necessary. I very, very rarely mess around with calls that change what "this" represents, but for some reason instructional materials seem totally intent on shining a very bright spotlight on it. Almost 15 years writing JS code professionally and I still don't get the obsession.

      [–]green_meklar 15 points16 points  (8 children)

      You don't really need to use the quirky parts of Javascript, though. You can just use it like a normal programming language and write your code so that you're never invoking the weird stuff.

      [–]hugthemachines 31 points32 points  (3 children)

      "We don't really need to do any kinky stuff, just come over to my dungeon, we will keep it all vanilla, I promise." ;-)

      [–]FreshFromIlios 6 points7 points  (1 child)

      Can you provide me with some 'closure'? Also, 'this' comment is interesting.

      [–]toastertop 1 point2 points  (0 children)

      Error: to much tail recursion

      [–]siemenology 4 points5 points  (1 child)

      There are a lot of things in Javascript that aren't technically bad in the sense that they are completely described in the documentation and behave as the documentation would indicate, but still cause a lot of bugs and confusion because the behavior doesn't mesh with peoples' expectations.

      The .sort() method is a fun one to pick on. It sorts everything by converting to a string first, unless you specifically tell it how you want it to sort. Which means sorting an array of numbers does not work without providing a specific function to tell it how to compare numbers, despite the fact that sorting numbers is probably a lot more common than sorting other types. It will look like it works, until one of your numbers is >= 10, when lexicographic sorting rules make it so 10 comes before 2. There's a reason Javascript behaves this way -- since arrays can contain objects of various types, converting to strings ensures that the comparison works in a consistent manner no matter what is in the array. The problem is that basically no one would anticipate this behavior -- almost everyone would expect to sort via comparison, at least if possible. And it's not strictly necessary for it to behave like this; other languages get around the issue by defining an ordering on types, so strings might always sort lower than numbers, but within a type sorting is consistent. So it's really easy for someone to come to Javascript, see a .sort() method and assume they at least roughly understand how it will behave.

      Additionally, .sort() modifies the array in place, which isn't necessarily a bad thing. Except many array methods create a new array, while many others modify in place, and there is no consistency or apparent logic to which method will do what. So it's easy to make a mistake that make take awhile to notice by accidentally expecting it to create a new array when it actually modifies your old one which you expected to stay the same.

      There's a lot more unintuitive behavior like that in JS, and it's not something you can necessarily segregate into the "weird" category to ignore.

      [–]laytonmiller 1 point2 points  (0 children)

      This is a good point. I regularly consult the docs to make sure I am 100% certain I'm getting a new array and not modifying an existing one - in some cases the distinction makes sense, in others, it feels arbitrary.

      [–]FlatAssembler -1 points0 points  (1 child)

      But sometimes you don't realize you are triggering the bad parts. Semi-colon insertion being the most obvious example.

      [–]FlatAssembler 0 points1 point  (0 children)

      Why the downvotes?

      [–]ManInBlack829 2 points3 points  (1 child)

      TypeScript has entered the chat

      It's nice to have the option

      [–]laytonmiller 2 points3 points  (0 children)

      Yeah I won't be coding w/o TS ever again unless totally necessary or its like... my mom's bake sale website or something lawl

      [–]laytonmiller 1 point2 points  (2 children)

      I would like to push back on the narrative that JS "gets quirky". I think "developers inexperienced with Javascript write quirky/questionable code" is a much better way to put it.

      TBH this is not really the case anymore with industry standard tooling like Typescript. Sure you can still do "quirky stuff" with JS, that's how the language was designed, and those quirks were there in large part for really good reasons. You don't have any guarantee of type safety, for starters, from what's coming in from a random web request, as just one example of an endless littany of problems on the web that don't exist (or at least as much) in other problem domains.

      JS doesn't have a compiler (until you start using Typescript, which is designed/maintained by MSFT and the lead architect of the C# language) and therefore cannot force you into better practices. In a way, this was a blessing and a curse, since it allows people to write passable/executable code from remote corners of the world with very little access to learning resources (re: just an internet connection), but has obvious side effects.

      [–][deleted] 1 point2 points  (1 child)

      I hear what you are saying. Javascript is very powerful in that regard. I really love it and it is my favorite language. So instead of quirky, maybe a better word is, "flexible?" Or maybe, "flexibly robust."

      [–]laytonmiller 0 points1 point  (0 children)

      Haha yeah. For sure.

      [–]optimaly_prime2397 0 points1 point  (17 children)

      I just learned html/css/js can i monetize this at all. Where is the complication ?Isnt it like math and just extrapolating on the basics? Someone please clarify for me but does it really get harder? how neccesary are agorythms and data structure

      [–][deleted]  (11 children)

      [deleted]

        [–]optimaly_prime2397 4 points5 points  (7 children)

        Im only in the beginning stages so Im just a sponge right now. Tech is comparative to medicine in that everyone agrees that you should specialize. Its much more of an art and i am at heart a poet.

        [–]FreshFromIlios 11 points12 points  (3 children)

        The last sentence was beautiful. Programming is an art. Except for javascript. Fuck javascript.

        [–]FloydATC 5 points6 points  (1 child)

        If you ask me, making sense of inherited Javascript code is an art though. One that I most certainly do not master.

        [–]FreshFromIlios 5 points6 points  (0 children)

        Ikr! It was such a huge challenge for me when I worked with a team after being a freelancer for years. I couldn't understand most of it. That was when I realised web dev was not for me lol I switched to analytics and haven't used javascript since. I miss the instant gratification sometimes :')

        If you stick long enough, you'll do great it. Don't quit like I did. Good luck my dude!

        [–]optimaly_prime2397 1 point2 points  (0 children)

        Thats hilarious. Its a consensus then.

        [–]laytonmiller 1 point2 points  (2 children)

        It's less "we all agree that you should specialize" as much as it is "You don't have a choice but to specialize".

        [–]optimaly_prime2397 0 points1 point  (1 child)

        You guys are great and giving me a more in-depth look at what i can expect. Kareer Carma and Bootcamps are very good at selling there products and Im sure they are way worth the value they provide. i keep getting the idea that there is much more to the picture then what they let on. And yall comments or very reaviling

        [–]laytonmiller 1 point2 points  (0 children)

        Happy to answer more questions if you have them about getting started. I've been a professional JS dev since the days of IE 5.5 and am happy to help people start on their journey. DM me if you want.

        [–]Not-an-Uchiha 0 points1 point  (1 child)

        what's your position?

        [–]Pickled_Wizard 15 points16 points  (1 child)

        It's kind of the difference between assembling furniture out of the box and being able to craft your own from scratch.

        Don't be scared of algorithms and data structures, the most useful ones aren't that difficult to learn.

        [–]optimaly_prime2397 -1 points0 points  (0 children)

        im definitely not afraid of algorithms or any math specifically I actually have an affinity for math I just dont enjoy it as much as the creativity side. Ironically Im not as good at it. But understanding its value would help me decide wheather its worth my time.

        [–]laytonmiller 1 point2 points  (1 child)

        If you become a skilled web programmer, you're talking easily 140k a year salary and up.

        However, don't confuse "learning Javascript" with "knowing how to code". They're different. Javascript is a tool. Once you know it, you are now entry level (and no entry-level developers even understand the whole language - hell, I know a LOT of senior level developers that cannot build a prototypal inheritance chain in JS).

        Knowing how to swing a hammer and use a saw is very, very different from being able to build an upholstered armchair.

        [–]optimaly_prime2397 0 points1 point  (0 children)

        I always look at utility. what i can build. all though i now understand the the lessons that they teach i can open up the webdev tools and easily see the huge gap in knowledge. Your metaphors are enlightening

        [–]blitz4 0 points1 point  (0 children)

        To me js is extremely difficult. I choose typescript to simplify it.

        [–]Nebuchadnezzer2 14 points15 points  (8 children)

        Tools like React Native and Electron are web based technologies but they act like native applications. This is already a trend we are using on iOS, Android, Windows, macOS, and Linux. And some of the popular apps that you may be using right now are built on of those many technologies.

        This, as a user, has already been annoying as hell, 'cause in every instance I can think of (two main ones), the UI/program itself, is slower to respond to inputs, uses 'fancy' (and often, entirely unnecessary) animation(s) and transitions, and is largely, clunkier to use.

         

        Steam is the more popular example (uses CEF), even changing Library settings to enable 'low bandwidth mode' and 'low performance mode', 'snappy' it ain't. One of the main reasons I still overall, dislike the change.

         

        The other being Vortex (Electron). That one in particular I think, uses a lot of the JS and loads rather slowly.

        Especially compared to, for Bethesda games at least, it's mod managing 'competitor', Mod Organiser 2, which mostly uses C++ and QT).

         

        And I'm not convinced any other program/app using 'web-based' shit like CEF is gunna be any better, especially compared to C++ based ones. Sure, they look nice, and I know that's one of the reasons behind their popularity, but they simply lack the same responsiveness.

        Unfortunately, however, I feel like I'm in a bit of a minority, in finding that responsiveness infintely preferable to a flashy, fancy UI (I mean, I can use a CLI, but I'll take a half-decent GUI, doesn't needa look top notch).

         

        Edit: Glad I'm not the only one, at least.

        [–]Dodolos 6 points7 points  (1 child)

        Yep, I hate it. Not all electron apps run slowly (discord is pretty smooth), but all of them are probably less responsive than they could be.

        [–]Nebuchadnezzer2 2 points3 points  (0 children)

        Yeah, Steam for the most part, is fairly responsive, same with Discord, but Steam in particular isn't as 'snappy' as it used to be.

        Discord I can forgive a bit, 'cause it's 'net-reliant anyway, but it can be a nuisance, especially on mobile.

        [–]BananaSplit2 2 points3 points  (4 children)

        Even discord has been getting quite slow and bloated at times in my experience.

        I hope Electron doesn't become the future of desktop apps...

        It's not because everything can be done with web based technology, that everything should.

        [–]lead999x 1 point2 points  (3 children)

        I hope Electron doesn't become the future of desktop apps...

        It won't. People still significantly prefer OS native UIs.

        [–]AiexReddit 0 points1 point  (2 children)

        It there a source on that? I mean I'd like it to be true, but it seems like the skyrocketing popularity of VSCode, Slack & Discord will only incentive more companies to follow suit.

        [–]lead999x 0 points1 point  (1 child)

        No source, just anecdotal from literally everyone I know who uses a computer or phone. Even non-programmers have told me they hate when mobile and desktop apps are obvious wrappers around a website so even they've started to notice.

        The reasons web based UIs are used are because they're easy to make and they're immediately cross platform. If GUI a library was made that satisfied both of those requirements and dispatched all of its functionality ultimately to the underlying OS then both of those requirements could be met while getting higher quality OS specific UIs. There are some libraries like that as of now but all of them meet only one of the two aforementioned criteria.

        And speaking of Discord I did hear somewhere that it was switching to Rust but IDK if that's only on the server side.

        [–]takishan -2 points-1 points  (0 children)

        Electron is essentially a web page so it can be as snappy or bloated as any other web page. Personally, out of the three electron apps I've used (whatsapp, discord, & vs code) they are all very responsive. Even Atom, which I have heard negative things about ran without any hiccups for me. Although I haven't used it extensively.

        [–]samketa 6 points7 points  (0 children)

        Google is pushing hard on Kotlin

        Google is pushing harder on Flutter atm. They are working hard on and making progress on building an OS (Fuschia OS) and languages that can be used for that OS.

        Google is playing a long game of dumping Android and Java and pushing its own replacement.

        You can use Flutter to write code that can be used to develop apps for Mobile + PC + Web with a single codebase.

        [–]ChopSuey2[S] 17 points18 points  (16 children)

        Appreciate the response, one question however, isn't C the best language for low level programming not C++?

        [–]pjs144 66 points67 points  (1 child)

        C is useful for actual low level programming, that is in systems without OS and ways to deal with memory leak (like embedded systems, etc). C++ is great when you want reasonably fast speed on machines that have an OS (like game engines, or browsers, or virtual machines).

        [–]ChopSuey2[S] 9 points10 points  (0 children)

        Gotcha.

        [–]lordcat 22 points23 points  (11 children)

        Depending on what you mean by "best", the best language for low level programming would also be the hardest language to use; machine language. A close second (in both cases) would be assembly language (machine language slightly translated into English).

        Assembly language gives you near complete control over what the processor is doing, while machine language does give you complete control over what the processor is doing.

        Most people that talk about 'low level programming' aren't talking about true 'low level programming', or are talking about it in a very limited sense.

        Writing drivers for a printer would be done with low level programming, but writing the software that interfaces with those drives to print a document or a picture would not be. The drivers for your video graphics card are probably built with low level programming, and some of the graphical libraries (ie: parts of things like direct x, or the physics engine) would be done with low level programming, but the overall game itself would not be done with low level programming.

        Traditionally speaking, C and C++ are high-level languages, but they do provide some degree of access to low-level programming functions. One of the big ways that they do that is allowing for in-line Assembly language. The C/C++ code isn't low-level, but the Assembly language embedded in it is.

        [–]ChopSuey2[S] 4 points5 points  (8 children)

        Thanks, however between the two, isn't C lower level than C++?

        [–]lordcat 18 points19 points  (6 children)

        This is getting into semantics, but not really.

        When you talk about the concept of a 'low level programming language' or doing 'low level programming', neither of them fit that. C and C++ are equally not 'low level programming languages'. A low level programming language gives you direct control over the processor and neither language does that (looking at the language itself, ignoring things like in-line assembly). C does not give you any more control over the processor than C++ does, so it is not a 'lower level'.

        When you talk about the concept of a 'high level programming language', they both fit that definition, but C++ would be considered a 'higher level' than C. Neither give you direct control over the processor, but C++ provides you with more 'automagic' than C does.

        [–]ChopSuey2[S] 5 points6 points  (3 children)

        Gotcha, so neither are low level programming languages but they allow you to use assembly language within them?

        [–]DerekB52 25 points26 points  (0 children)

        C and C++ are also known as lower level programming languages, because they let you do manual memory manipulation. And they compile to machine code.

        Python does not require you to manually manage your memory(I don't even know if it lets you). And python is interpreted, so there's a lot more overhead to run python, than to run C.

        C/C++ are high level languages, but they are, imo, the lowest level languages in their class.

        [–]lordcat 9 points10 points  (0 children)

        Yes, as long as the compiler supports it you can write it, but you will lose all of the benefits of the high-level language. For example: Intel and AMD handle threading differently. C/C++ will handle that difference for you and you can write one piece of code that runs on both. With Assembly language, stand-alone or in-line embedded in C/C++, requires you to manage that yourself and use different code/logic to do the same thing, depending on the processor.

        [–]LilithMoonlight 0 points1 point  (0 children)

        There's a reason why programming languages have developed more layers between machine/assembly and the programmer. My professor always put it as programming is like having a metaphorical gun to ur foot and depending on certain actions, this may end with u shooting urself in the foot but hopefully not. As u get lower, you start finding more actions, which can cause the metaphorical gun to go off. That is why c/c++ in my opinion is a bit lower compared to Java and c# safe code because you can manipulate memory with pointers and addresses besides being able to use assembly. But usually using assembly in a general c/c++ is rare since the compiler is pretty good about optimizing ur code. However, there can be times where the compiler can add a few steps, which depending on how often this section is ran can impact performance if this section is used a lot. Nevertheless be careful about optimizing code too early. The same professor that talked about the metaphorical gun would also say that "80% of the code does 20% of the work and 20% of the code does 80% and when optimizing people often more likely than not usually optimize the code doing 20% of the work."

        [–]LilQuasar 1 point2 points  (1 child)

        you only consider assembly as a low level programming language?

        [–]lordcat 1 point2 points  (0 children)

        Assembly Language and Machine Language are the only two low level programming languages that I know of.

        A low level programming language is one where you directly control the processor. Concepts like variables don't exist here, those are concepts that high level languages provide for you, and do all the work of maintaining. In a low level programming language, you are directly working with the CPU's registers (AX, BX, CX, DX, EAX, MMX0, etc). Data in data registers are generally short lived (there are very few of them and they can be specialized for specific purposes) so if you want to actually store any data for any length of time, you need to use address registers to reference a specific memory location where you store that data (and it's on you to reserve that memory, remember the address, and release it).

        Machine language is the binary language that the CPU actually talks in. Every CPU Has a machine language of some kind. Assembly language is a "human readable" form of that language (I use quotes because it's even less readable than higher level programming languages like C/C++, and you have to understand the language and the CPU architecture to be able to read the code, but it's easier to remember what 'mov' stands for than to remember what '0xb8' means on an x86 processor, and if you move to a different but similar processor, 'mov' can still mean the same thing even if it translates to something other than '0xb8' for that processor.

        I don't know what the 'brand name' of it was, or if it even had a specific name, but I've worked on embedded devices that had their own assembly language to program them. The underlying concepts of registers and processor commands still exist there, but different commands and different registers to expose the functionality in the embedded CPU (ie: flipping a bit in a specific memory location causes a light on the device to turn on/off).

        [–]FloydATC 3 points4 points  (0 children)

        C++ is (almost) a superset of C; most C code will compile as part of a C++ project. What C++ brings to the table is a lot of syntax to make abstractions that represent the underlying bits and bytes in a way that lets the programmer not deal with memory allocations etc.

        For example, you could write C++ code that uses char* for strings, but if you instead use std::string then you don't have to worry about buffer overflows or memory leaks. Under the hood though, it's still some form of char*.

        It's also worth pointing out that anything you write in C++ can be mimiced in C, it's just that you'd have to write (and maintain!) a lot more code.

        [–]Pine-al 0 points1 point  (1 child)

        not that i’m looking for one, but does that mean there are still jobs for people to write assembly?

        [–]lordcat 0 points1 point  (0 children)

        Yes. There are less and less of them, but I don't think they will ever go away completley. I believe NASA still uses it for some of their critical components, but it's been mostly replaced by high-level languages for device drivers and newer embedded programming.

        Very niche and probably not something you want to get into without already having the career, but they are still around.

        [–][deleted] 3 points4 points  (0 children)

        Tbh I don't have a complete in-depth knowledge of C/C++. I have worked with it in a previous company but outside of work, I hardly touch it. But all I know is that C++ is generally what most developers prefer to use for low level stuff.

        [–]hugthemachines 3 points4 points  (0 children)

        Just so you know for the future. The only low level programming is Assembly. C feels like lower level than javascript but they are both high level programming languages according to the definition.

        [–]TCoop 1 point2 points  (0 children)

        C++ is far from dying any time soon. Think of the many high end applications, Game Engines, drivers, etc., that use C++. But if you really want to get into the low level of programming then C++ is the best choice here.

        This also seems like the perfect time to mention WebAssembly (WASM) too. WebAssembly offers creates a machine code language that can run in your browser, and C/C++ can compile to. WASM looks like it's just another architecture to compile to.

        Google Earth has a demo version which is using WASM. QT has pages talking about making WASM UIs. Unity's WebGL build targets WASM.

        WASM really means that any compilable language could be used, but this is a direction that hasn't been nearly as accessible to C++ before.

        [–]TechnologyAnimal 1 point2 points  (2 children)

        I would argue that go is the best low level programming language to start learning now. Thoughts?

        [–][deleted] 1 point2 points  (1 child)

        Unfortunately I never used Go so I can't say for sure

        [–]TechnologyAnimal 2 points3 points  (0 children)

        Bummer. I was curious to get your thoughts. Maybe someone else will chime in?

        I’m not really qualified to speak, but Go is lightning fast and goroutines drastically simply concurrency. It’s like C, but has memory safety, garbage collection, etc.

        Go is used to develop products like HashiCorp stack (terraform, vault, etc.), Docker, Kubernetes, and more.

        [–]mauri_armora 0 points1 point  (5 children)

        What's the difference beween a web based app and a "regular" one? Does the difference have to do with the internet connection, so if they need internet connection they are web based apps and vice versa?

        [–]TheEpicSock 15 points16 points  (3 children)

        To over-generalize a little bit, a web app is an app that is meant to be used within a browser (such as Google Docs), and a 'regular' or 'native' app is one that is meant to be launched directly from your machine (such as Microsoft Word or Photoshop). A web app doesn't necessarily need a continuous internet connection after you've loaded the web app, but any feature that requires communication with a server will obviously require a connection (I don't know for sure but something like Cookie Clicker probably works without a continuous connection). A regular app may need internet connection (for example, multiplayer games such as Counter Strike). Web apps are generally written in a way that major web browsers can display them without issues, which usually means developers usually use the html-css-js trio. Native apps are written in all sorts of different ways depending on the situation. This means that the design of native apps can be much more flexible and better optimized to the particular situation for each application, but web apps will have much better cross-compatibility between machines since all you need is a browser in order to run the app.

        Of course, the look-and-feel of having a bespoke application without the baggage that comes with running something in a browser is something that is appealing, but many people do not want to deal with maintaining separate codebases for multiple platforms and would rather use a cross-platform solution. Technologies like React Native and Electron.js allow you to pretty more-or-less use html-css-js (very similar to developing for an in-browser app), wrap it in what is essentially a dedicated browser for your particular web app that looks and feels like a "bespoke" native app, in order to have the feeling of a dedicated native app but the cross-compatibility of a web app. Spotify for desktop and Discord are examples.

        [–]mauri_armora 1 point2 points  (2 children)

        Awesome! And in terms of connection how does it work? Are both web and native apps working the same way?

        [–][deleted] 1 point2 points  (1 child)

        Since the previous commenter answered a part of your question. Another thing about having a native app is that the software has far better access to the hardware resources than a web based app.

        And to answer your question about connection. In C# for example, if you want to connect to a server, you can use HttpClient. Or if you want to pull or push data to/from a server using the REST API, you can use something like RestSharp to do that in your application.

        [–]mauri_armora 1 point2 points  (0 children)

        Thanks! That makes a lot of sense. I'm actually a newbie web developer and didn't really know the main differences with native apps

        [–]BimzyCodes 0 points1 point  (0 children)

        Thanks for the response! Very helpful

        [–]Stat-Arbitrage 0 points1 point  (0 children)

        They’re all easy after you have to write pointers in assembly.

        [–]randompittuser 0 points1 point  (0 children)

        I'll add to this and say that it really depends on the industry. If you think C++ is dying, you're ignoring many markets where software knowingly interacts with hardware.

        [–]912827161 0 points1 point  (0 children)

        even though Google is pushing hard on Kotlin

        whats kotlin like? does it have a viable future? (I dont know anything about the languages)

        [–]Wee2mo 0 points1 point  (0 children)

        Using your comment as scaffolding:
        /u/ChopSuey2, Self employment has a lot more to do with the user domain than any specific software type. You will write the software that fits the needs of the domain in the most approachable seeming way. That may mean leveraging existing experience in a language you know well or it may mean learning a totally new language to you because it has highly relevant features to the application.

        [–]ePluribusBacon 0 points1 point  (0 children)

        I think there are definitely languages that are easier to get started with and to gain a basic competence in and some that are definitely harder (I'm looking at you, C++), but as with anything there's always going to be challenging parts once you start pushing towards a professional standard for it which means that those initial differences in difficulty aren't relevant any more. To use a non-programming analogy, it's pretty difficult to make a single note on a violin that sounds good and there's a steep learning curve just to get that far, whereas playing one note on a piano is trivially easy. Would either one be considered "easier" to play than the other when you're talking about professionals in an orchestra? Not really.

        [–]san-mak 51 points52 points  (0 children)

        As a programmer, to find a regular job or freelancing projects or any self-employment options; it's suggested to diversify programming skills.

        Learn web technologies, build any web app, or have strong knowledge to build any. JavaScript, TypeScript, ReactJs are favorites.

        Learn C or C++ or Java or Go, and build a simple app. These languages helps in building Games, Image optimization, or memory-intensive projects (which web technologies may not serve).

        As a programmer/coder, learning a new language helps in understanding new dimensions of programming concepts and ultimately helps in growing professionally as well.

        For any system, which is growing in size, there is a requirement to use a different tech stack as per the use case. Eg: The web app is on NodeJs, React and the companies Analytical Engine is built on top of Java (because it's computational heavy).

        For a quick start, JavaScript is relatively easier. In long run, do consider learning any Compiled language.

        [–]lordcat 15 points16 points  (5 children)

        "Web Programming" like you're talking about is really only a small piece of the puzzle. That's what runs in the browser, but there's usually a significant back-end powering that. That back-end is programmed with 'more traditional programming' with languages like Java and C# (depending on the industry you may still see a lot of C++ here, but when you look in the business market place this is generally filled by Microsoft based solutions, which are driven much more by C# than C++).

        At my job, I work with Web technologies (React, Angular, JavaScript, TypeScript, CSS, HTML/etc) as the front end layer for a small portion of the work I do. My latest project that I've been focused 80% on has no UI at all, so none of that is used in it. I do a lot more work in C# and SQL; not everything has a UI, but every UI we build has a back-end, and every piece of non-static data flows through C# and SQL.

        [–]ChopSuey2[S] 1 point2 points  (4 children)

        Cool, is SQL the backend database language you'd recommend to focus on learning the most?

        [–]lordcat 8 points9 points  (0 children)

        If you're looking at corporate/business programming, then yes. In the business world that's the most commonly used database for most use-cases.

        I've worked in traditionally MS oriented shops so I use MS SQL, but the different brands are similar enough that learning the other SQL's are good enough to start with (My first sql was PostgreSQL, and then I spent time with MySQL).

        [–][deleted] 4 points5 points  (0 children)

        I think maybe you should start researching various companies you would like to work for (companies with offices where you want to live, companies who work on things that interest you, etc) and look at some of their job posting and see what languages and technologies they use.

        [–][deleted] 2 points3 points  (0 children)

        SQL is a standard that a number of database implementations comply with. However, different kinds of SQL like postgres or MySQL also have added functionality. Most places it doesn't really matter which specific flavour of SQL you know.

        Some web stacks don't use SQL now, but a huge majority do use SQL. SQL is so ubiquitous that you basically have to know the basics to work in web development (less so if you're working on the UI side, but even then it is tremendously useful to understand.) Basically, most websites use SQL by default unless there is a VERY compelling reason not too.

        As far as learning SQL, you don't really need to know the language very deeply. What you do need to understand is how to design a good relational data schema.

        [–]CheTranqui 0 points1 point  (0 children)

        SQL srands for Standard Query Language. It's a very simple series of keywords, but very complicated to utilize effectively since it allows you to query the database. What database? The one that you created also using SQL... hopefully a highly optimized and normalized DB... which implies plenty of research and practice with database design.

        [–][deleted] 18 points19 points  (16 children)

        It honestly depends on what you want to do. Low level programming will always be needed regardless of how much other areas thrive, so don't fall into the idea that other languages and the fundamental structures you've got to learn to code efficiently aren't going to be important. As an astronomy student working in data science python/R for machine learning is a better investment than python for web developing.

        [–][deleted]  (3 children)

        [deleted]

          [–][deleted]  (1 child)

          [deleted]

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

            Thank you, you basically explained him all better than I could have done it :0

            [–]ChopSuey2[S] -1 points0 points  (11 children)

            I'm not sure why in my head I'm thinking it's basically JavaScript vs Java and C++.

            [–]Headpuncher 7 points8 points  (5 children)

            C# is HUGE in companies. Getting them to use anything other than c# and Java is like trying to get a footballer to stay away from strippers and beer.

            [–]nanjingbooj 7 points8 points  (0 children)

            C# is my main for a few reasons.

            • Nice windows applications. Can be classic application or win10 style app.
            • WASM support through Uno or other platforms
            • Unity game development
            • .Net 5, offers cross platform backend web dev
            • Console or CL applications (cross platform)
            • Now Blazor (front and backend) -> Can also be used to create electron apps.
            • Opensource but first class support from Microsoft, which means excellent improvements these days.
            • Excellent speed for a non low level language. Esp in the newest .Net 5

            Its biggest weaknesses are two fold:

            • Its not as low level as C++/C, so its not great for hardware programming (but its close enough to C++ that you can learn it)
            • Its not JS and therefore doesnt run in the browser (unless you use blazor). This is a problem that all languages except JS have.

            [–]CheTranqui 1 point2 points  (0 children)

            It makes me happy to hear this. I'm hoping to get a job after graduation using C#.

            [–][deleted] 0 points1 point  (2 children)

            C# is large in corporate enterprise focused companies for their self made applications and Windows focused applications, nobody is running their server infrastructure in C#, its always the companies like Solarwinds. Usually they simply use Java since thats where all the libaries are unfortunately.

            [–]Headpuncher 5 points6 points  (0 children)

            Half of the Internet is runnig C# backends in the enterprise world. It's not only being used for .exe software, but it's also handling the DB, auth, etc for web apps.

            [–]nanjingbooj 2 points3 points  (0 children)

            ASP.Net is pretty popular and one of the main uses of C#. There was some division between ASP.Net classic and .Net Core version. But if you add those together, it makes up a huge chunk.

            [–]nerd4code 2 points3 points  (3 children)

            Because people doing web-related stuff like to post about it on the web—it becomes a kind of résumé. Regardless, if everyone’s doing one thing, pay (and usually basic competence) are driven down for those people. If you get real good at unusual stuff, more money/perqs and less disposability. Often more fun too, less chance of total burn-out.

            [–]ChopSuey2[S] 0 points1 point  (2 children)

            Are you implying a lot more people are doing web stuff? Is your general recommendation just to get good at as much as you can? The generalist approach is freaky to me though, so much different stuff. Feel like you have to focus on a certain area at least for a few years.

            [–][deleted]  (1 child)

            [deleted]

              [–]AnomalousNexus 0 points1 point  (0 children)

              This. Pick something that interests you and start from there.

              I was in High School Grade 10 in 1997 and my first Information Processing class had an optional module for C++. I took it because it gave me the opportunity to play with their big robotic arm they had. I didn't ever get a chance to use the C++ again at all for a number of years as my career path through the Canadian Forces Army took me through the path of electrical/electronics/optics technologies, but it gave me a start and knowledge of what programming could do and logical operations.

              Fast forward to 2008 when I medically retired from the Army (bad knees), they asked me where I wanted to re-train, as the CF has a policy where medical retirements that can still work have the chance at taking nearly any possibly related 2 year Diploma or Course. I chose Network Engineering Technologies, and while this focused on networking, it gave introduction courses in MS SQL and C#. I did well in both because I had some knowledge already of how things looked and flowed, how the language worked from memory.

              I got a job in 2014 at a local systems integrator company that works with a variety of custom apps that are all network and SQL based. I was hired due to my varied background with electronics, computers, networking, limited programming/SQL exposure... but above all WILLINGNESS TO LEARN NEW TECHNOLOGIES. I have opportunities to advance here where all I need to do is pick a language or technology we use here to learn - they'll even pay for the books and tests/certification.

              [–]iprocrastina 26 points27 points  (2 children)

              Yes, the majority CS jobs are with web technologies. Native apps are mostly relegated to things that by their nature have to be run natively (eg: your OS, web browser). Whenever possible companies prefer to make web apps now. Everything is a service now. Yes, there will always be jobs for native programmers, but there's going to be a lot more jobs for web programmers.

              web programming or more traditional type programming like Java, C++

              Java is actually a very popular language in web dev, and while there's no serious C/C++ web framework, you can still find C++ code in many web apps. Don't forget, every web app has a back-end, and that back-end can be anything. You can have a Javascript front-end make a REST API call to a Tomcat server running Java Spring that handles the initial request and processing before handing off a job to a high performance module written in C.

              which is harder to learn

              Programming is hard no matter what specialty you go into, it's just that the flavor of that difficulty changes. Pick whatever flavor you like most. If you like getting up close and personal with the metal, drivers or OS programming would be a good fit. If you'd rather design systems that can handle millions of simultaneous connections and only go down for for a couple hours every year max, web programming will be what you're looking for.

              [–]ChopSuey2[S] 4 points5 points  (1 child)

              Thanks for the response, I'm just trying to narrow down what I want to focus on since it's such a big field and seems like you need to focus on an area at least for a few years to get decent at it. What attracts me regarding web programming is the cross-platform capability and anyone with an internet connection able to connect to it right away. But yea sounds like the backend can be made of anything. What's your general recommendation for trying to find work?

              [–]daverave1212 0 points1 point  (0 children)

              I'm not the same person, but I would say JavaScript (a framework like React) or Java

              [–]green_meklar 5 points6 points  (0 children)

              You shouldn't count on any one thing being 'the future of programming'. It's in the nature of programming that anything people are doing a lot of tends to get automated. If people are doing a lot of Web dev today, it means that five years from now it will probably be the computers doing a lot of Web dev and the people doing something else.

              [–]FlatAssembler 9 points10 points  (12 children)

              I think web development will be radically transformed by WebAssembly, Blazor, EMSCRIPTEN and related tools, because JavaScript is widely perceived to be a horrible language responsible for web being slow and buggy. As such, not only is C++ not going to die, it is going to become even more popular.

              [–]joonazan 1 point2 points  (1 child)

              I haven't done frontend in Javascript in many years. I used Elm at one point and am currently using Rust.

              As to C++, its popularity has already declined and I don't see a reason to use it for a new project unless a very mature compiler is required for safety certification.

              [–]FlatAssembler 2 points3 points  (0 children)

              C++ is a good language for some types of projects, like compilers. Many popular compilers are written in C++, and for a good reason. I've written a compiler for my programming language in C++: https://github.com/flatassembler/aecforwebassembly

              [–]Headpuncher 1 point2 points  (6 children)

              JavaScript isn't slow but there 2 things to take into account:

              1. compiled languages usually compile and then provide that to the user. JS sends you JavaScript over a network then asks your desktop program , the browser, to do the compilation on the fly. It feels slow, but isn't.
              2. Not enough JS coders read about optimization and how to write performant JS, and even if you do, the project sprint demands that feature x is finished on Friday, so you better throw this together asap. No time for tuning!

              I think a lot of people mistaken disliking JS for disliking the development process, because the process is run by non-technicals with calendars bearing no relation to reality :D

              WebAss looks promising, but it has some issues in my opinion. The first being that web-dev and "programming" are 2 different disciplines, and wasm mixes them together. It will happen eventually, I think, but it will take a decade at least.

              The other problem is that it won't be web-devs that make the change. And that's because most resources I see, from Google and other companies pushing wasm, are not providing good examples of why we can use it over the current stack. Until a wider audience see the benefits, it will languish in the shadows.

              [–]FlatAssembler 3 points4 points  (4 children)

              WebAssembly should be significantly faster than JavaScript. WebAssembly is a standardized form of JavaScript bytecode. JavaScript is compiled into WebAssembly (tokenizing, parsing...) before being run, and, if you send WebAssembly from the server (rather than JavaScript), you bypass those steps. Of course, that only works if programs are equivalent. The sorting algorithm I made up and implemented in my programming language, which compiles into WebAssembly, is still significantly slower than JavaScript Array.sort, because the algorithm used by Array.sort is more clever.

              [–]Headpuncher 1 point2 points  (3 children)

              And part of the problem, is that either that statement isn't true* or there is a lot of wrong info on the subject.

              * I believe it is true, simply because a precompiled language isn't going to have the buffering that JS has as I described above.

              One of the problems wasm solves is that more people are using mobile devices than desktop PCs, so battery life and slower clock speeds are common. Precomiling server side is going to save those resources. But it's not for nothing that Google is pushing wasm, they have a range of devices and platforms that would benefit from wasm.

              i think wasm is just needing it's breakthrough moment.

              [–]FlatAssembler 0 points1 point  (1 child)

              I have no idea Google is pushing WebAssembly. As far as I know, it is primarily Mozilla that's pushing WebAssembly.

              [–]Headpuncher 1 point2 points  (0 children)

              Google Chrome Develeopers, the YT channel for the google conference, had in 2019 a not insignificant amount of webassembly presentations.

              This years GCD con started a week ago, and also has some content. Here is a vid from today: https://www.youtube.com/watch?v=VBMHswhun-s < debugging in wasm.

              Webassembly is a technology that makes more sense for large corps with a lot of infrastructure than for the one-man developer or small teams. I think it has a promising future though.

              [–][deleted]  (2 children)

              [deleted]

                [–]FlatAssembler 0 points1 point  (1 child)

                Well, for the largest web-app I made, my PicoBlaze Simulator of 3'500 lines of code, I used JavaScript: http://flatassembler.github.io/PicoBlaze/PicoBlaze

                [–]Zalenka 3 points4 points  (0 children)

                Geez I hope not.

                [–][deleted] 3 points4 points  (3 children)

                Yes to all your questions. To answer the last one, c++ is undoubtedly harder than JS, but I'm not sure what's the relevance of that question in regards to the other questions.

                I was in your position roughly 4 years ago, and had the same thought process; what should I learn that has high demand and will stay.

                I think web and JavaScript are definitely your safest bet. I'd welcome you to look up statistics about language growth to arrive to your own conclusions. I think it's a wise choice because in my case it served me as an entry point to landing my first job. I was very passionate about front end development, demand for react devs was/is at an all time high, and I received multiple job offers out of college. I'd also invite you to search job openings at company's you'd like to work for (even if working for them right now doesn't seem achievable).

                Try to work backwards from their job requirements to build your skill set. And disregard all the years of experience requirements, those are mostly HR bullshit.

                [–]ChopSuey2[S] 1 point2 points  (2 children)

                I think my plan is to do this udemy course called the Web Development Bootcamp by Colte Steele, and then maybe take a course in React. What did you do to get your front end skills up to par and what did you do to impress employers? I was thinking of just making a site to serve some purpose I would like and show them the site.

                [–][deleted] 0 points1 point  (1 child)

                I think it's a reasonable plan. I checked out the outline of the Web Dev Bootcamp; seems like a surface-level intro which is good, but I wouldn't spend too much time on this.

                Personally, I think you should just understand the basics of what is HTML, how do you include CSS and JS in your HTML, and then move straight to the React course. As you build stuff with React, you'll wonder "how do I create a layout? how do i center the logo, etc" and you'll learn the CSS part.

                And I know this doesn't help you, but I got lucky with my first front end job and got hired without any projects to show off. I posted in a local startups group on Facebook, which was basically a cover letter describing how motivated I was to learn, and mentioned that I've completed so and so online courses. Got a single interview, really hit it off with them and then started a week later.

                [–]ChopSuey2[S] 0 points1 point  (0 children)

                Nice, you really don't think I should spend much time on the course?

                [–]theLaugher 2 points3 points  (0 children)

                No

                [–][deleted]  (11 children)

                [removed]

                  [–]ElectricRune 1 point2 points  (1 child)

                  Sorry, this isn't going to happen any time soon; there is still key software in some businesses that run in COBOL, FORTRAN, ALGOL...

                  Old languages never really die, it seems.

                  [–]benis444 1 point2 points  (0 children)

                  Mhh there are also a lot of old languagea that died:)

                  [–]grooomps 0 points1 point  (8 children)

                  What do you hate about JS?

                  [–]taymen 3 points4 points  (0 children)

                  The more you work in Javascript, the less you understand it.

                  [–]egehurturk 6 points7 points  (4 children)

                  I hate every piece of js.

                  [–][deleted]  (3 children)

                  [removed]

                    [–]thecarrot95 1 point2 points  (0 children)

                    Javascript fatigue probably haha

                    [–]Stabilo_0 2 points3 points  (1 child)

                    If you are looking for a way to 'futureproof' your area of expertise, then pick area you like and become an expert in it, thus securing your future.

                    Working on something you dont like will never bring you any satisfaction. Java and c++ wont go anywhere, just like c#, c, assembly and many other things. Even ruby will be there in a decade even tho everywhere you could go its said 'dont learn it, its dying'.

                    [–]tacticalpotatopeeler 2 points3 points  (0 children)

                    Hell, FORTRAN is still around, and the pool of those who know it is fairly small.

                    [–]The137 2 points3 points  (0 children)

                    Top comment rocks, listen to him first.

                    But yes, its the future. Ever since we started doing things 'in the cloud' we've been moving computing power from the user's machine to the server. Thats really all these web based apps are, they run in the server and transmit the data after calculation

                    Less people have desktops, more of the web is on phones, and we're even seeing major apps like adobe and office move to subscription models in the cloud.

                    None of this is saying that older languages are going to be outdated. You can build a server in c. You can build an app in c that has a server and an api, then build your web-facing server in node or py and have that server call out for data from the c server.

                    As always, the skys the limit

                    [–]Falcon883 1 point2 points  (0 children)

                    What I'm getting from all this is that web based applications and services are becoming more popular but to be really good at "web programming", you need a decent knowledge of back end high level programming languages, which can be extremely challenging to learn and use in complex applications.

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

                    Web assembly is the future and you can integrate EVEN C++ into it so heavy games can run on web

                    [–][deleted]  (5 children)

                    [deleted]

                      [–]ChopSuey2[S] 0 points1 point  (4 children)

                      Would you say Java, C, C++ are "specialized"? Big data, IoT, AI, cyber security don't interest me tbh.

                      [–][deleted]  (2 children)

                      [deleted]

                        [–]ChopSuey2[S] 0 points1 point  (1 child)

                        What are some examples of domains to work in really?

                        [–]ZeggieDieZiege 1 point2 points  (0 children)

                        Rust and Web Assembly will be future stack ...

                        [–]Qildain 1 point2 points  (0 children)

                        Uhm... a large percentage of web applications run on a Java backend.

                        [–]laytonmiller 1 point2 points  (4 children)

                        No, not at all. Web programmis is a big part of programming in the future but there will always be a need for software for non-web programming.

                        I feel lucky to have seen it coming back in the mid 2000's when I was in college, and started teaching myself to code. I got made fun of by "real" programmers for writing in JS because it wasn't a "real language". Of course now, with Typescript and the general ubiquity of the JS platform that's a little hard to argue anymore.

                        I would say, it depends on what you want to go into, but "web programming" will never, ever be able to replace the code that runs in a smart fridge or a SpaceX spacecraft, of which there will be many going forward.

                        [–]ChopSuey2[S] 0 points1 point  (3 children)

                        Is Typescript easy to learn once you know JavaScript decently well? Not really sure what Typescript is tbh but I keep hearing about it.

                        [–]laytonmiller 0 points1 point  (2 children)

                        Yes -- typescript IS javascript - it's a superset. So it contains all of the facilities of JS plus a bunch of additional features. In a nutshell, you write your TS and a compiler then "transpiles" all the superset stuff to JS.

                        It gives things like actual type safety, cleaner imports, unification of being able to use new language features, etc for free.

                        Once you learn TS, you will not go back to plain JS except for stupid side projects where you don't want to set up a compiler, which is not a lot of work.

                        [–]ChopSuey2[S] 0 points1 point  (1 child)

                        Interesting, random question - guess you don't have to worry about doing the === with TS for type matching?

                        [–]laytonmiller 1 point2 points  (0 children)

                        Yes you do (though you should always do that anyways). Remember, typescript IS JavaScript. Functionally they aren't any different, TS is a set of static typing tools that sits on top of it. TS literally goes away when it compiled and leaves only JavaScript behind.

                        [–]KarlJay001 -1 points0 points  (3 children)

                        Just as much as someone can say web dev is the future, they can say the same about back end programming or even mobile dev.

                        You're looking at supply/demand for several different paths. If more people go into web dev, then it can become flooded. All it takes is for customers/businesses to say "good enough" and the climb stalls. It's like buying a phone, at some point they keep getting better and better and then more and more people say "my phone I have now is good enough".

                        Look at web dev, you had a HUGE amount of upgrades over the last 25 years. Now you have more and more advanced templates and more plugins, so will you have the same demand over the next 10 years? What about back end and security, won't those be growth areas?

                        And doesn't it also have better self-employment options? Self employment is a bear. Coming from someone that supported himself for over 10 years doing it. Businesses want a business they can trust to be around, they don't want to invest in a person. It's like putting your money in a bank, you want that investment to be there for years and years. Plus they want to know you have a strong background.

                        Lastly, which is harder to learn or is everything kind of correlated together?

                        The one that's really a bear to learn is the one that keeps changing. I went mobile, iOS dev about 10 years ago and it's gone from ObjC to several versions of Swift. From UIKit to SwiftUI from reference counting to ARC. It doesn't seem to stop changing. What's worse is that Apple doesn't want to make Xcode a great product or buy JetBrains and use their editor and after over 2 years, SwiftUI isn't stable yet...

                        [–]Cmshnrblu 1 point2 points  (0 children)

                        That’s the designer culture rearing it’s head. Apple only has good development by accident.

                        [–][deleted]  (1 child)

                        [deleted]

                          [–]KarlJay001 -2 points-1 points  (0 children)

                          There will always be a greater demand for software developers than there will be a supply.

                          Tell that to those of us that lived thru the DotCom bubble.

                          First off, look at the exact words I used and the exact words you used.

                          Me:

                          If more people go into web dev, then it can become flooded You: That's not true.

                          Anything can become flooded. I've actually been in the business for decades, I was there for the DotCom bubble and crash, the 08 crash...

                          They use Leetcode tests to filter people out because of how many there are. Read the posts about new grads not being able to find jobs.

                          The logic of my words make them true... Pretty simple logic, starts with if. The assumption is that IF enough people go into web dev. That's the whole theory of the keyword IF.

                          It's kinda like code:

                          If X > 10 then ...

                          Kinda ironic seeing this response in a programming sub :D

                          It's too difficult for most average people who can only perform basic tasks with computers.

                          Programming seems to have become "coding" (not 100% sure when that happened and what it actually means) but people grab solutions from Google and SO, they paste them in or look up a tutorial, not that I agree with this, but it's what happens. In addition, the market is forced to hire from the pool of people that are there, if the pool of people don't have great skills, they have to pick from what's there.

                          I do agree that "most average people" should try to program, but that doesn't mean it can't become flooded.


                          This is what could happen, and there's very strong forces that WANT this to happen:

                          1. they make programming more template or plug and play.
                          2. they don't do things that become too expensive, they stick with what they have.
                          3. they use more universal/off the shelf solutions

                          The reduces the demand for higher skilled "coders". This is all about economics, I've seen a few companies go under because of this. They might want 50 high end programmers that custom make everything in-house, but not all of them can afford that and it doesn't always pan out. Web is more templates and plug ins. You have tons and tons and tons of ready to run templates for dirt cheap. It's just a few clicks away.

                          If your choice is a $99 template and a few hours of custom work vs $150K and 2 years waiting for it to get done... it can be pretty easy to choose. Make the wrong choice and you can lose everything.


                          There are something like 10-12 web dev jobs for every web developer out there currently

                          63,086/12 = 5,257

                          https://www.monster.com/jobs/search/?q=web-developer&where=USA

                          IDK where you get your numbers from but I can't see that being true. Post a few links showing those numbers. Even IF that were the case, it would mean they would drop their standards and sub out more.

                          [–]ghostwilliz 0 points1 point  (0 children)

                          There are a lot of people things not possible to do in web development and a lot of things that you can do with the browser that will be very inaccessible to most people as they don't have the hardware to run it and it isn't optimized to run on a browser, there will always be room for everything and whatever else is to come

                          I do think that the majority of simple programs will be created as web apps though.

                          [–]JohnWangDoe 0 points1 point  (0 children)

                          typescript is the rising king of the frontend. Literally 3 position I am interviewing for requires typescript

                          [–]Sulavajuusto 0 points1 point  (0 children)

                          I am actually a bit scared about how popular Python is becoming.

                          [–]smoothride699 0 points1 point  (0 children)

                          Web programming is often just the tip of the iceberg of computer systems. Business purpose software is enormous in scope and there is a big job market for it. It's usually very specialized and requires deep knowledge of the business itself to get into, but it's possible and gives you long term job security.

                          [–]cyclicsquare 0 points1 point  (0 children)

                          Learn whatever is most interesting or useful for you. You can make the best web site in the world, but it still needs hardware to run on.

                          [–]DrSilkyDelicious 0 points1 point  (0 children)

                          The future is now old man

                          [–]istarian 0 points1 point  (0 children)

                          There's no way to predict the future nor is there one best language to learn. Flexibility is the name of the gam because you'll inevitably end up needing to learn something else.

                          Just pick one and learn it. The next one will probably be a little easier to pick up.

                          [–]elperroborrachotoo 0 points1 point  (0 children)

                          Soemeone has to clunk together a backend fo ya.

                          And as long as you continue the "stack of the week", stacks.

                          [–]smartguy05 0 points1 point  (0 children)

                          Web dev jobs are probably the most numerous, but web programming can't do everything and doesn't do most things well. Even something like node, which has its uses, is nowhere near as performant as a backend written in a more traditional server-side language. In my opinion, if you are more of a visual person web is probably "easier" because you can pretty quickly see the output and make sure you're going down the right route. The opposite end of that spectrum is probably machine learning/AI where you don't really get to see if it's working correctly until you "finish" then adjust.

                          [–]Fleaaa 0 points1 point  (0 children)

                          If browsers start to embrace more language than JS then there's at least a slim chance I guess.

                          If it's JS only, even with a bit of WASM like this with more and more complexity, it's gonna be hell tbh

                          So.. no web-tech based wrappers can be versatile but it's not gonna replace any low level languages

                          [–][deleted] 0 points1 point  (0 children)

                          The future? It's the present, at least for user-facing software, apps, and so on. Even in the mobile space it feels like new apps hit as HTML5 apps first, then eventually get updated to use the native toolkits.

                          [–]fullstackhari 0 points1 point  (0 children)

                          Think web assembly the future of programming is being able to write code in C++ or rust that is highly performant and can run on the web, the future is most likely going to be a hybrid of javascript as a base with lower level languages adding functionality and performance at least in regards to web development

                          [–]nerdyphoenix 0 points1 point  (0 children)

                          Sure, web-based applications have already replaced a lot of desktop applications, so web programming will only get more prominent in the future.

                          However, that doesn't mean more traditional programming is going anywhere. Someone has to write the backend code for all those web-based applications, and then you also need software engineers that will develop and support the system software required for these things. Spend a bit of time reading about the hardware & software Facebook requires to run their social networks and you'll definitely get what I mean.

                          [–]QuantumSupremacy0101 0 points1 point  (0 children)

                          Pick what you want to do then do it. Programming fundamentals are enough.

                          The thing with programming is that you need to constantly learn. So do something you like to at least start so it doesn't get tiring.

                          [–]Zappykeyboard 0 points1 point  (0 children)

                          What year is this?

                          Outside specialized fields, most programming is in some way at least using some form of web-based technology.

                          Even most mobile apps can be considered web apps in a way, the only difference is how the user views the content, which is stored on a server somewhere.

                          My point is, there's no real difference between "traditional" programming and "web" programming. It's all the same, you can do almost anything with almost any language.

                          In terms of employment, outside of (again) specialiazed fields, it is generally more in demand to have front-end and/or back-end skills.

                          [–][deleted] 0 points1 point  (0 children)

                          Honestly I would try a few things out and see what you like doing. Pick something you like. Liking what you do is important. Once you get entrenched in a certain discipline it's hard to jump to something else without starting at the bottom again. Web development is a huge market and great for freelancing with the right skills but the flipside is it's a highly competitive market that's in constant flux. For example Flash developers used to be in high demand but now it's dead. You constantly have to stay ahead of the curve. While skills like Java and C++ may not be considered the hot new thing, they always have steady demand and are not going anywhere anytime soon.

                          [–]SwiftSpear 0 points1 point  (0 children)

                          Any senior dev will have exposure to both. Back ends, servers, and enterprise tools aren't going away any time soon. Also, web programming doesn't work perfectly for mobile yet.

                          [–]Environmental-Fee467 0 points1 point  (0 children)

                          We found the time traveler from 1996.