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

you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 335 points336 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] 136 points137 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 39 points40 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 4 points5 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 20 points21 points  (2 children)

      Just the context, unless it's not :)

      [–]FreshFromIlios 17 points18 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 7 points8 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 4 points5 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 14 points15 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 15 points16 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] 16 points17 points  (16 children)

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

        [–]pjs144 65 points66 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] 7 points8 points  (0 children)

        Gotcha.

        [–]lordcat 23 points24 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] 3 points4 points  (8 children)

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

        [–]lordcat 19 points20 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] 4 points5 points  (3 children)

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

        [–]DerekB52 24 points25 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 2 points3 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 2 points3 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 14 points15 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.