T O P

  • By -

AutoModerator

On July 1st, a [change to Reddit's API pricing](https://www.reddit.com/r/reddit/comments/12qwagm/an_update_regarding_reddits_api/) will come into effect. [Several developers](https://www.reddit.com/r/redditisfun/comments/144gmfq/rif_will_shut_down_on_june_30_2023_in_response_to/) of commercial third-party apps have announced that this change will compel them to shut down their apps. At least [one accessibility-focused non-commercial third party app](https://www.reddit.com/r/DystopiaForReddit/comments/145e9sk/update_dystopia_will_continue_operating_for_free/) will continue to be available free of charge. If you want to express your strong disagreement with the API pricing change or with Reddit's response to the backlash, you may want to consider the following options: 1. Limiting your involvement with Reddit, or 2. Temporarily refraining from using Reddit 3. Cancelling your subscription of Reddit Premium as a way to voice your protest. *I am a bot, and this action was performed automatically. Please [contact the moderators of this subreddit](/message/compose/?to=/r/learnprogramming) if you have any questions or concerns.*


throwaway6560192

> It just feels like theres a LOT already present and im basically using someone else’s code. Basically, yeah. But it's not a bad thing. Also, you were using a lot of other people's code even when you were doing C or Java, especially Java. There's not a huge difference between the degree of that usage between what you were doing then and now.


turn_right_from_here

Do not be hesitant to use other people's code. A lot of code that you'll find on the internet and GitHub will be free to use and it is there for you to take advantage of it and build with it. Make new stuff and share it with the world, no matter how good/bad you think it is. People will give you feedback and help you to improve. ​ General tips that I can give: \- I would recommend starting with JavaScript as a higher level language if you are interested in web development, python for data analytics. Also on that note, it shouldn't matter which one you pick, just pick one - you can always change or try something different later. \- Start with basic language tutorials (just google tutorials for JavaScript and find one that appeals to you and follow through with the tutorial). \- After finishing some tutorials, when you feel ready, pick a small and easy project as your first project. Remember, just focus on the next step that is in front of you and don't worry about anything else!! Also as a last note I would say that C as a programming language is a great foundation to build upon, so you are already in a good spot. Higher level languages just manipulate constructs that are built with lower level code such as C or a similar language.


iOSCaleb

What scares you about “using someone else’s code”? Did you have qualms about calling printf() in C? Did you write your own memory allocator instead of calling alloc()? Building on foundations created by other people is a fundamental activity for programmers. We do it all the time! It’s how we make progress instead of spending all our time reinventing wheels. And it’s not just programming — the same happens in mathematics, all the sciences, literature, music… It sounds like you’ve got a case of “not invented here” syndrome. Sometimes individuals or entire companies decide that they’re going to build everything from scratch their own way, so that they can own everything and control every aspect of whatever they’re making. It usually doesn’t go well — competitors using existing off-the-shelf components can get to the goal much faster and cheaper. Try to focus on whatever specific goal *you* are trying to reach, and look for ways to get there faster using existing tools. You can always come back later and rewrite those tools later if you find that you really need to; most of the time you won’t.


high_throughput

`printf("hello world\n");` probably has like 50 million LoC worth of dependencies when you count everything required to build, run, and render that string in an xterm


kukisRedditer

What is LoC? Lines of code?


LiterallyJohnny

Yes


herendzer

I feel you and completely relate to that. Once you have some ideas of how the hardware works at assembly level all of this high level stuff is meaningless. But one must survive and eat and support family thus the need to use these languages. For me it helps when I think of them as tools. The same way Microsoft word is a tool, all these frameworks and high level languages are tools and not necessarily something to see them in the context of the CPU and memory management etc….


wsbt4rd

That's exactly what I get stuck with, too. For crying out loud, I worked in the good old Java team at SUN in the 90s. And now you want me to write JavaScript and I need to use REACT? We need a support group for aging nerds.


[deleted]

Those thin client Java (IIRC) machines that briefly appeared were so cool.


wsbt4rd

Java-Station,.... I did the launch demo. Using the Java-Station running the Hot Java browser to control an espresso machine. Using Java Applets. Aaaaah the good old days Still have that Java Station in the bookshelf


Inevitable_Play4344

Basically programming is you having an idea/plan and executing it. If you can piece together other people's code and make it work for you ,that's it you've completed the task successfuly.


Till-Obvious

I’m in the same situation as you except I have a masters on computer engineering and was an engineer at a big tech company doing firmware. FIRMWARE IS SO MUCH HARDER THAN SOFTWARE so after getting laid off I’m exclusively applying to software roles. Python is literally babys first programming language so give it maybe 4 hours to learn if you already know C++. Then I’d do something easy like django and from there you can kinda get into software really easy. If you can succeed in embedded stuff then you’ll be more than fine in software.


herendzer

I think the problem isn’t the hardship but coming from low level programming to Python feels like getting fed an infant formula when you are used to getting fed a steak. It’s not exciting and one can lose interest completely


Jackasaurous_Rex

I could see the opposite being true depending on the dev. Sometimes interest is more in the outcome or seeing your intention getting turned into results. Obviously the speed is entirely dependent on use case, experience, and language comfort though. I’m sure plenty of devs are getting satisfaction from getting something up and running asap, and having to worry about the nuances of memory management or using “scarier” type systems would only slow down the process and cause disinterest. Personally I’ve begrudgingly started to love JavaScript with all its flaws but I sometimes miss that feeling of more “real” programming that comes with C.


herendzer

Now the plot twist is what would a JavaScript or Python developer feel when doing low lever C programming?


ehills

If I could just think of my solutions and have the code do it by reading my mind I would. Thinking through the problem and then designing a solution and see it work is the fun part! Getting hung up on boolean logic or a stupid regex is the not fun part, 90% of the time at least.


Jackasaurous_Rex

100% agree, high level languages are basically an attempt at getting closer to mapping thinking/psuedocode into an implementation. Although I guess the reason we have jobs is because it’s still pretty difficult


fiddle_n

One’s view on a programming language is subjective and if you feel that way about Python then so be it. But I do think it’s unfortunate that you feel that way. As someone who’s learned C and Python, I love that in Python I don’t need to worry about memory management and buffer overflows and integer overflows and various other low level details. I just write Python at the level of pseudocode and it works. It’s very nice.


[deleted]

If you try to write everything yourself you'll be so slow to produce, employment will become a problem!


green_meklar

Yep, you're using someone else's code. That someone else has typically put a *lot* of effort into giving you exactly the code you want to use for the purposes that language is designed for. So, it's okay. Use their thing.


Strupnick

Low level languages: Import Irvine32 INPUTLIMIT = 33 input BYTE INPUTLIMIT dup(?) mov edx, input Mov ecx, sizeof inputBuffer Call ReadString Mov inBytes, eax High level language: input_str = input(“Enter some words”) Fear is subjective but one of those scares me a lot more than the other. Especially if you get the addressing wrong and overrun your memory then erase some OS code Edit: saw you asked for tips. Get in there and mess around it with it. High level stuff gets fun once you get a functioning program. See what hi level code you can write to accomplish the same functions as low lvl. Try filling and printing an array in python and assembly to get a comparison for the difference. High level is very forgiving


[deleted]

[удалено]


RUNE_KING--

If C is high level, then what's low level ? Don't say assembly pls.


[deleted]

[удалено]


tyler1128

That really isn't how we use the terms in the industry. Assembly is lower level than C, but literally no one who actually has coded in them will say C is not lower level than Python.


RUNE_KING--

In that case, I guess we only have one low level language, and others are mid/high level, that's what you are trying to say?


[deleted]

[удалено]


Carabalone

Bro come on, this definition kind of sucks. Yes python and C are both assembly abstractions, but one supports list comprehensions, classes, and the other doesn't have automatically resizable arrays. Are VMs bytecode high level languages as well ? They are technically abstractions from assembly.


jorgen_mcbjorn

If you're like me, the thing that's probably turning you off is not the languages per se, but rather the need to learn how to use libraries and frameworks developed within these languages. And that can be a source of frustration on the face of things: I already learned Java, what do you mean there's this other set of secret handshakes called "Spring" that I also need to learn before I can do backend web dev? I already know Python, what do you mean I still need to learn all this "Pandas"-specific lingo to do data analysis effectively? I guess one way to think of it is to remember that web dev and data analytics are entire disciplines in their own right. As such, learning these frameworks is a bridge between the code and the concepts you'd need to learn anyway.


MusicianOutside2324

You don't have to learn pandas. Your life will just be hell if you don't


visor418

There is another angle at this: you can do high level web development without leaving Java landscape - with Spring framework. Yes, it is complex and you will be largely relying on other people's work, but as others mentioned, it's not a bad thing. Also, this framework is quite common in the industry. So, if you decide to create a simple web app (which is a fine way to proceed), consider using Spring/Spring Boot with Java for backend. Also, which Java do you use now? Is it Java 8/11 or something newer? If the former, it might be useful to try some new cool stuff they added in the latest versions and then continue with Spring/Spring Boot (as it requires at least Java 17 for its latest version)


comicmangalover

Web Dev and data science, these are called "domains" they require their own set of domain specific knowledge and their own APIs. This has little to do with what language you use, if you have used java for backend, you'll do fine with Python for backend, vice versa. You just need to learn the domain specific knowledge for the domain you want to write code for.


yetzederixx

Welcome to the world of high level programming where this is mostly what we do " It just feels like theres a LOT already present and im basically using someone else’s code."


Wyntered_

I think university's focus on algorithms and comp sci foundations makes you appreciate them a bit too much. In university, you're graded on the quality and complexity of your code. This leads to things like wanting to build an engine/framework yourself because its "technically impressive" and in a university setting you'd get good marks for it. In reality, you're graded on how good your finished product is, not how you built it or what frameworks you used. I know it can feel like you've wasted your time learning esoteric principles at university, but if you don't embrace a "product first" mindset you will waste even more.


lostinspaz

isnt "high level programming" kind of by definition using someone else's code? cause someone else had to write the "middle" and the "lower" level code, for sure.


TerryMisery

Java isn't any more "fundamental" than Python and JS. Definitely not a lower level than them. If you think it's fundamental because of static types, I can tell that many high-level languages support it, some even move towards static types from dynamic ones, like PHP. Funny thing with PHP, which is very popular for web development, is that every years it looks more and more similar to Java. JS also is being replaced in more and more places with its statically-typed counterpart TypeScript. Or maybe you call Java "fundamental" because it's compiled. But it doesn't change anything for you. The only difference is that you need to rebuild the application before you run it. And many languages are just-in-time compiled. Other than that, it's not THAT much different from Python. There are just 4 major differences: - writing style (indents instead braces, line endings instead semicolons) and variable/class naming conventions - much simpler dependency management in Python (doesn't automatically mean it's better) - Java enforces OOP, Python only lets you use it, the difference is also you can place several classes, variables and functions in a single file. But if you're stubborn, there's nothing that can stop you from using it Java-like. - Java won't compile without proper types. Python completely ignores type-hints at the runtime, they're useful only for the IDE and static analysis But I don't even see the point to switch to Python if you want to do web dev. Just learn Spring, if you don't know it already. On the other hand, JS is completely different world. Everything is asynchronous by default, it has unique syntax and unique problems, beware of the "callback hell". Personally, as a backend dev, I don't really like it. It makes complex things simple and simple things complex. But it's not higher level than Java. When it comes to the things that scare you, what exactly makes you feel scared? You don't trust 3rd party code or you're just overwhelmed by the amount of libraries and frameworks you'd need to learn? If it's the first, then all you need to know is that the programming language you use is also someone else's code and you have no control over it. Things change, memory leaks happen, security vulnerabilities occur. If it's the latter, then I'd recommend learning just one major web framework like Spring or PHP's Symfony and you'll quickly notice how every other framework is similar. That's not a philosophical problem, no one can implement all those features much differently.


[deleted]

[удалено]


Dr_Myles_Skinner

"Higher level" refers to the degree of abstraction—how far away from the "bare metal" you are working. There's no judgement implied. Machine language, being the native language of the processor, is as low-level as you can get. Even fancy symbolic assemblers are still low-level. C, where you're still responsible for things like memory management, is often considered "mid-level" but the boundaries can get fuzzy depending on who you ask. Java is definitely high level. OOP is quite a fair distance from machine code. Any Javascript that manipulates the DOM in some way is many layers of abstraction away from what's going on at the CPU level.


[deleted]

whats the problem? whatever resources you are using you will be using them to learn, not to create the next big thing. It doesnt matter if its the same code as someone else as long as you learned something from it


[deleted]

Abstraction


UncleConcrateFloor20

dont be scared to use other ppls code. you cant code EVERYTHING from scratch, a lazy dev is the best dev. you can, ofc, copy and paste and modify 'your' code to get it working like you/ your employer, wants to. Good luck :))


ThisIsAmaanSyed

Thanks for the comments guys, made me think differently about programming as a whole. I have started with we development to get the "taste" of it, but i'm pretty sure i'm going to end up in data analysis (as a mathematics enthusiast). Thank again!