Useful Programming Languages?

Pages: 12
Hey guys, my CS class is dangerously easy so far, I've coded all the assignments within a few hours of him uploading. The way he sets up the assignment PDFs makes it so that I've coded a large chunk of the assignment before I even know what the heck the program is really supposed to do. It's a weird feeling, but the alternative is to read over the whole PDF several times to figure out what he's talking about so *shrug*.


Anyway, I delved into Win32 coding so that I can work with DirectX, and because it was a lifelong dream to code a hack for this video game I play. Judge me, but I must satisfy this urge. There's a whole tutorial on how to do it, but it's a copy and paste kind of coding, I want to be able to understand it when I do it. It's not to look pro, I already do that regularly with my skills, wrecking "pro" players all the time. It's just a gut feeling telling me to inject my DLL - it's a natural feeling.. right?


I can't even stay on point! I was curious about what else to get into as well. I've been excitedly learning Win32 (minimally - enough to use DirectX), but I like to change things up. Same with my anime, I'll get tired of watching a particular anime (but still want to watch anime!), so I'll switch over to another series. And that's how you binge watch for several hours.


I did it again! Anyway, I was wondering what languages you guys liked learning - that were useful. I was planning on getting into Java, JavaScript (hate coding in it, but so many jobs seem to favor it), Python (I can't explain it, I felt like I was playing with a child's toy compared to coding in C++, haven't delved into it past bare bone basics), and HTML (I sometimes get hot and bothered with the idea of creating a website, and I assume I'd have to start with HTML).


Any thoughts? Languages I should add in, prioritize, or remove? What language do you mainly use for your own jobs?


Thanks!
Last edited on
closed account (E8A4Nwbp)
have you considered PHP? Do you have a software portfolio atleast, to have something to show for your skill with programming languages. An android game, for example.
Last edited on
https://www.goodreads.com/quotes/7854941-if-you-are-the-smartest-person-in-the-room-then
If it's too easy, or too hard - you're in the wrong class.

The usual bell curve of ability will be in your class, just the same as anywhere else. So your tutor is going to be pitching to the middle regardless.

I suppose you could be content that you're an outlier on the positive side - but you'd be missing an opportunity. Feel for the poor souls at the other end of the curve, still scratching their heads at "hello world".

Talk to your tutor to see if there is an advanced or accelerated stream you can join.

> Any thoughts?
Find an open source project you like and contribute.

Well, find several to start with and just lurk on the developer lists to get a feel for how well the project is run. Pick one where you think you could work with the rest of the team.

Programming is SO much more than simply knowing where the curly brackets go.
https://en.wikipedia.org/wiki/Software_development
All that stuff in the right hand pane, you at least need some level of awareness of, and some degree of expertise in if you're an actual working coder.

You have to contend with:
- requirements (more than a few bullet points on 1/2 page of A4 from your tutor)
- design (more than a back of an envelope sketch)
- coding time (over weeks, not a single sitting)
- large code bases of 100's to 1000's++ files (homework is a handful at best).
- source control systems (git, perforce, ...), learn about commits, branches, merges.
- working with other people (homework is a solo effort).
- style guides, making sure your changes are seamless with everyone else's.
- testing (more than 5 minutes). Continuous Integration systems usually come with extensive test suites. Expect your early submissions to break something you didn't plan to break.
- cross-platform development, so expect your "it worked on Windows" to break the Linux build at some point.

Knowing this stuff will be more important in the long run than a list of bullet points ticking a list of languages.
Last edited on
have you considered PHP?

I am now!

Do you have a software portfolio atleast, to have something to show for your skill with programming languages.

I was never sure what to program for something like that. I've got some programs that I coded and keep for myself, but I'm not sure how impressive they'd be. I made a console Sudoku game (that I can't find -_-) and a C# application that's a shutdown/hibernate/sleep timer. I suppose I'll try to make something impressive with DirectX.


If it's too easy, or too hard - you're in the wrong class.
Just trying to get a degree!

Knowing this stuff will be more important in the long run than a list of bullet points ticking a list of languages.

Thanks, but I'm fairly familiar with all of this. I suppose contributing to an open source project would be a helpful experience, I'll try it out!
Since we're both fellow students in pretty much the same exact boats, having a portfolio would be pretty good. Learn JavaScript and Java. I've seen PhP mentioned as well. I see all these languages in the software engineering internships I've been applying to, but it would appear that JavaScript is heavily stressed in a lot of them.

Are you really good with data structures? Know data structures and algorithms very well and some CS fundamentals and theory. I've done some interviews, and some of the coding challenges were from foundations of programming up to data structures.

I would go with what @salem c mentioned. Extend your knowledge not only to programming languages, but a whole lot of things that are in the software development industry.
it would appear that JavaScript is heavily stressed in a lot of them.

Yea, it makes me hate life, but I suppose I'll have to get to it sooner rather than later.

Know data structures and algorithms very well and some CS fundamentals and theory. I've done some interviews, and some of the coding challenges were from foundations of programming up to data structures.

Thanks for the heads up, I'll be sure to refresh my memory of them before interviews!

Thanks guys, really helpful advice ^-^
Last edited on
closed account (E8A4Nwbp)
No, thank you. For not suffering in silence.

I suppose I'll try to make something impressive with DirectX.
Would a creative brainstorm between some of us help?
Last edited on
Would a creative brainstorm between some of us help?

I just started coding with DirectX, so I should get the hang of it first - see what's possible with it. I'll probably be inclined to do something similar to Portal. Once I start on it I might make a new thread just for brainstorming.
Direct2D or Direct3D?

They are two different ways for throwing graphical images at the monitor.
Direct3D

I assume it's superior, but I wouldn't really know!
Don't ass|u|me, unless you like wearing donkey ears. I know I don't.

If you are going to start playing around with DirectX understanding the overall architecture would be helpful.

DirectX Graphics and Gaming:
https://docs.microsoft.com/en-us/windows/win32/directx

Direct2D has its uses, Direct3D has its uses. Neither is superior to the other.

Direct2D is best suited for dealing with graphics in windowed apps. Direct3D can do full-screen apps, such as games.

DirectX is more than graphics:
https://docs.microsoft.com/en-us/windows/win32/audio-and-video

I've dinked around with Direct2D in its current incarnation, Direct3D several DirectX versions ago. I just haven't devoted much time to wrapping my brain around all of what DX has to offer yet.

I've also dabbled with GDI and GDI+ to create simple graphical games.

Oh, and DirectX is not a language, like C or C++ are. It is an add-on library for the Win32 API.
Last edited on
Don't ass|u|me, unless you like wearing donkey ears. I know I don't.

Sometimes you gotta wear the donkey ears so people know to inform you.

Direct2D is best suited for dealing with graphics in windowed apps. Direct3D can do full-screen apps, such as games.

Games were what I was going for, so good that I'm on the right track !

Thanks for the links, I'm following a tutorial and don't want to overwhelm myself with all the other concepts that I may need to learn later. This is more of a learning experience - many games I play work on DirectX.

Oh, and DirectX is not a language, like C or C++ are. It is an add-on library for the Win32 API.

Yea, I'm coding it with C++.

Thanks for the info, DirectX probably has more features than a single programmer would ever need to use solo.
What language do you mainly use for your own jobs?

I use C# a lot. .NET ecosystem... And WPF (C# + XAML) is nice to know for GUI programming.

salem c wrote:
- source control systems (git, perforce, ...), learn about commits, branches, merges.
I totally suggest setting up a personal server (can be on your same physical machine) for git or perforce. p4v provides a nice user-interface and diff tool. It helps you keep track of changes in a project, even just a personal one.

I think knowing a little bit of x86 assembly is good to have, just to be able to have some sense of what the compiler is spitting out, not necessarily knowing all the details.

Also, I'm thinking about using drafting programs (e.g. AutoCAD) to plan out some stuff (designs) instead of doing them on paper. Haven't done this yet, though.
Last edited on
I use C# a lot. .NET ecosystem... And WPF (C# + XAML) is nice to know for GUI programming.

I see, I should get back into C#. I used it lightly with minimal knowledge for a quick timer program.
javascript (node) & C++ do everything I need.
C++ for processing, javascript to connect to various databases etc. C++ can do it, but its more trouble. And C++ isnt supported on our cloud technology.

Everything else I know is at best redundant and at worst outright inferior.

Java and python may be useful to know if your job demands it, but both have serious limitations.
Python can't do integer math efficiently (read, 10x slower than c++, not exaggerated) without using add ons . Java has no unsigned type nor operator overloading. Python's libraries are extensive but everything I have tried to do in it apart from connecting to a remote machine has been exceptionally sluggish. Java is fast enough, but exceptionally clunky.
Last edited on
Everything else I know is at best redundant and at worst outright inferior.

I see, I'll definitely get to Javascript sooner than later then. Thanks for the insight!
javascript is very, very similar to c++. The biggest difference is that it relies heavily on nested functions (function defined inside another) and the style is more old-school free-for all in most online examples (globals and general hackery). You don't have to make a mess in it, but that seems to be how all the online stuff is done.

and redundant is OK. A language that can do anything these two can efficiently is just fine; you just don't need it unless its what your job asks you to use. And that is the crucial thing... you will have to learn what your job / company require you to use, even if its 'bad'. If the boss says use python and java, you use python and java...
Last edited on
Thanks, I'll probably learn it along side DirectX. I almost went into a Java tutorial ! Thanks again for the insight, I heard Python was good for connecting code in different languages together or something. I guess I'll get to it eventually but probably on the bottom of my list.
closed account (E8A4Nwbp)
If the boss says use python and java, you use python and java

An intriguing situation. I infer that the implication is some bosses make decisions of what means something is to be achieved by, not in the most ideal ways, you could attempt to suggest a more ideal means, correct?
Last edited on
It just means that business needs trump personal preferences.
Pages: 12