Programming thread

I'm going to fall on the "not necessary" side of the assembly debate. Unless your goal is specifically to acquire skills that others don't have - and keep in mind that won't necessarily translate to a job - it's a bit like learning how to build an internal combustion engine in order to be a race car driver. Granted, there are certain fields where assembly is necessary or desirable, like embedded systems and compiler development, but the number of people working on those projects versus working on normal user-facing applications or web stuff is pretty small.
 
I'm going to fall on the "not necessary" side of the assembly debate.
One thing that could be useful on the assembly level is knowing what generally counts as a "cheap" versus an "expensive" instruction. But if you're using anything newer than a 486 it's probably a fool's errand to try to get into the details.
 
I don't think assembly is worth bothering with for a beginner. You already listed "computer architecture" in the fundamentals which I agree with, so I would say just start with C but be aware that C is an abstraction, machines operate on machine code, and they really work the way your architecture works.
One thing that could be useful on the assembly level is knowing what generally counts as a "cheap" versus an "expensive" instruction. But if you're using anything newer than a 486 it's probably a fool's errand to try to get into the details.
Even below assembly there's microcode, which is what actually decodes the machine instructions and makes calls to RAM, the ALU, etc.
 
  • Like
Reactions: Marvin
Even below assembly there's microcode, which is what actually decodes the machine instructions and makes calls to RAM, the ALU, etc.
Yes, though I think even the most hard-charging purists would agree that most programmers don't need to know the details of this.
 
  • Optimistic
Reactions: SIGSEGV
Just uploaded a new build of my game to itch.io, and as always, noone wants to check it out.
I would post a link here, but I don't want to get doxxed.
 
Just uploaded a new build of my game to itch.io, and as always, noone wants to check it out.
I would post a link here, but I don't want to get doxxed.

How many games are uploaded there per day, or week? Considering steam is nothing but a sea of indies it's a miracle anything gets recognition, but even then it's mostly word of mouth that's get the job done. Do you do any shilling anywhere or just uploaded it and pray for success?
 
How many games are uploaded there per day, or week? Considering steam is nothing but a sea of indies it's a miracle anything gets recognition, but even then it's mostly word of mouth that's get the job done. Do you do any shilling anywhere or just uploaded it and pray for success?
I tried shilling it on some thematic discord chats and some indie gaming communities. But there the problem is that everyone else is also a developer, who shills their own stuff.
I'm gonna upload it to Newgrounds when it's done, even though it's mostly dead nowadays aside for the art portal, that has plenty of porn, but it should get it a couple of thousand of plays, if it gets to the front page.
 
I'm going to fall on the "not necessary" side of the assembly debate. Unless your goal is specifically to acquire skills that others don't have - and keep in mind that won't necessarily translate to a job - it's a bit like learning how to build an internal combustion engine in order to be a race car driver. Granted, there are certain fields where assembly is necessary or desirable, like embedded systems and compiler development, but the number of people working on those projects versus working on normal user-facing applications or web stuff is pretty small.
I disagree, I think learning Assembly is actually one of the most important things a software engineer can do even if you only work in a very high level language like Ruby, because in doing that you start understanding why things are the way they are which further translates into you being able to solve bugs that people are scratching their heads about because you can actually understand what's going on. After you know how to do most things in Assembly the rest of software engineering becomes so piss-easy you can do it with your eyes closed.
 
Write a full sized program in Assembly with no libraries and get back to me on that one
Define "full-sized program". I've written a token scanner in MIPS for school and did this assignment called the binary bomb (not my school).

Nobody's written an actual application in assembly in decades. Roller Coaster Tycoon was a major exception by the time it came out in 1998, and things have become way more complicated since then.
 
  • Agree
Reactions: Marvin
Define "full-sized program". I've written a token scanner in MIPS for school and did this assignment called the binary bomb (not my school).
When I say 'full sized application' I mean something that needs a few complicated datastructures and dynamic memory allocation. What you've written is more like a reverse engineering exercise.

Nobody's written an actual application in assembly in decades. Roller Coaster Tycoon was a major exception by the time it came out in 1998, and things have become way more complicated since then.
I'm guessing you've never seen any of 2 Ton Digital's stuff then? https://2ton.com.au/rwasa/
 
Is it bad practice to make heavy use of public static members in C#? Also, I know you're "supposed" to make your member variables private and make accessor and mutator functions, but I've heard nobody does that outside of school and I don't do it either because it bloats up the code.
 
  • Like
Reactions: Marvin
Write a full sized program in Assembly with no libraries and get back to me on that one

I can agree with having an understanding of Assembly indeed is useful in memory allocation and is integral in actually being able to properly debug. It's usefulness in terms of modern computing is debatable. Unless you are developing programs for embedded controllers, getting to that level is a little bit overkill for most programmers. I really don't see a lot of applications that would create that much of a choke hold on system memory. Just my limited understanding of the current conversation though.
 
I can agree with having an understanding of Assembly indeed is useful in memory allocation and is integral in actually being able to properly debug. It's usefulness in terms of modern computing is debatable. Unless you are developing programs for embedded controllers, getting to that level is a little bit overkill for most programmers. I really don't see a lot of applications that would create that much of a choke hold on system memory. Just my limited understanding of the current conversation though.
No you're misunderstanding me, I'm not necessarily suggesting that you're ever actually going to even write any Assembly in practice, it's just that being able to do so gives you the ability to speculate about and easily understand things about the entire computing stack ad hoc and based on that form pretty reasonable guesses as to why things work a certain way which can then help you fix things.
 
No you're misunderstanding me, I'm not necessarily suggesting that you're ever actually going to even write any Assembly in practice, it's just that being able to do so gives you the ability to speculate about and easily understand things about the entire computing stack ad hoc and based on that form pretty reasonable guesses as to why things work a certain way which can then help you fix things.

Oh! Well then in that instance, I can agree with you on that front. It is an excellent debugging tool, just have a conception of how systems are organized indeed is nifty. Admittedly, I'm a bit trash at assembly, bit much to wrap my head around at times. But, it does indeed help to understand how things work under the hood. ie) microprocessor level.
 
Is it bad practice to make heavy use of public static members in C#? Also, I know you're "supposed" to make your member variables private and make accessor and mutator functions, but I've heard nobody does that outside of school and I don't do it either because it bloats up the code.

Properties (the accessor/mutators in your case I guess) are used by things like WPF/UWP and reflection, if you don't use those you can say fuck it and make everything public. Static functions work if you are making "ultility" classes that provide stateless functionalities like logging to a file and shit like that.

Edit: If you're worried about properties you can use the lazy man's auto properties.
 
Write a full sized program in Assembly with no libraries and get back to me on that one
This is just more retardation. If I write a program that has to do even the most basic POSIX without a library, I've just written a completely non-portable program.

No you're misunderstanding me, I'm not necessarily suggesting that you're ever actually going to even write any Assembly in practice, it's just that being able to do so gives you the ability to speculate about and easily understand things about the entire computing stack ad hoc and based on that form pretty reasonable guesses as to why things work a certain way which can then help you fix things.
Knowing assembly won't teach you network programming, building distributed systems, or how to write good SQL, all of which are major parts of the modern day computing stack, and indeed libraries. Knowing assembly won't even teach you how to use git, which is now a requirement of software engineering.
 
Is it bad practice to make heavy use of public static members in C#?
I would try to avoid mixing static and non-static. If you have a public static (EDIT: and non-const) field on a non-static class, that would indicate something odd to me.
 
Just uploaded a new build of my game to itch.io, and as always, noone wants to check it out.
I would post a link here, but I don't want to get doxxed.
Yeah, you basically threw a bucket of water into the Mississippi. I'd start looking at game dev forums and sites specifically on promoting your new game. One idea that springs to my layman's mind is sending free license codes to Twitch or YouTube streamers or Let's Players - you'll probably have better luck with the smaller ones because I bet Dr. Disrespect and the like get inundated with them. Maybe look for ones who particularly focus on the genre of game you've made; for example, looking for clips of the recent Microsoft Flight Simulator release, I found YouTube channels that focused on flight sims of various types throughout the years that had massive audiences but I had never heard of them.
 
Back