• Some users have recently had their accounts hijacked. It seems that the now defunct EVGA forums might have compromised your password there and seems many are using the same PW here. We would suggest you UPDATE YOUR PASSWORD and TURN ON 2FA for your account here to further secure it. None of the compromised accounts had 2FA turned on.
    Once you have enabled 2FA, your account will be updated soon to show a badge, letting other members know that you use 2FA to protect your account. This should be beneficial for everyone that uses FSFT.

What's a good programming language to learn?

Sounds like you want to do something to expand your knowledge. If you just take someone's advice for what you should learn, you'll get bored and stop. Instead brainstorm something that sounds like a lot of fun and could be useful for you. Maybe it's building a website, weather station, [...]
I think this is good advice. The one problem with it is that most people choose some impossibly ambitious project. "I don't know anything about C++ but want to write a MMORPG in 3D. Where do I start?"

Start simple, and be reasonable. Most of the projects you list are pretty sensible goals, though taken to an elaborate degree, the might explode into crazy ambitious things that would just be frustrating for a beginner. I've made a couple of posts that offer a list of projects, like this one, which have some appropriate suggestions, too.

I probably only come to [H] anymore to check the programming section and find mike, usually mocking and belittling people... Probably why I also like shows like Kitchen Nightmare's or Hell's Kitchen with Gordon Ramsey. Only to watch Gordon beat people down, although in the end he means well and people realize it eventually.
Sorry you feel that way, but it would seem that you're only reading (or only remembering) some fraction of my posts.

Gordon Ramsay yells a lot for a pretty good reason: people are idiots, and need to be shocked out of unconscious incompetent behaviour before they'll even evaluate the need to change. What kind of incompetent boob makes it to the final of 16 top chefs in the United States, but can't reliably cook risotto or some fish? A professional chef who plates meat and sends it to the pass without checking that it's raw? Someone who under-cooks pasta is going to be the head chef at an up-and-coming brand-name restaurant in a cosmopolitan destination city? Someone who, blindfolded, can't tell the difference between pork and salmon is going to write a menu for a four-star restaurant?

No way. Why would Ramsay attach his name and reputation to such a venture? The people on that show are entirely incompetent and unworthy of the position he's offering as a prize. Sure, it's campy reality TV, but these people have shown up for a job interview and are completely blunderous and under-qualified.

People who make recommendations like "I would either go with C# or Java. After using both, I lean more towards C#." to a beginner without offering any justification or rationalization, then can't even read the thread for context to understand other posts, are the equivalent of the risotto-burners on that show.

The IT Auditor/Director I will be working under my accounting internship started as a programmer. So I thought I'd follow a similar route.
Do you understand how his programming experience contributes to his job now? Do you think it makes things easier for him, gave him some enabling understanding of systems that he uses daily? Something else? Or was it a waste of time?

I'd suggest that if he knows programming but isn't a programmer, he's not a very good one. Who becomes an expert in playing guitar, for example, then doesn't become a guitarist but instead goes on to manage a violin factory?

When you asked him about his background, what explanation did he give for learning programming but not becoming a programmer? What language did he learn, and why? What language would he recommend that you learn, and why?
 
Last edited:
I think this is good advice. The one problem with it is that most people choose some impossibly ambitious project. "I don't know anything about C++ but want to write a MMORPG in 3D. Where do I start?"
The problem is not that these types of projects are too ambitious for beginning developers but that few will have realistic expectations for how long such projects will take to complete.

For a beginning C++ developer, going from a blank canvas to a more-or-less-fully-functioning 3D game engine could be a three or four year time investment, estimating conservatively. Given the right attitude, the right approach to self-education and the right expectations, however, a game engine could be the ideal first project if it keeps the person interested, excited and motivated to learn.

The only thing that could ever ignite a flame is a spark.
 
Sorry you feel that way, but it would seem that you're only reading (or only remembering) some fraction of my posts.

Gordon Ramsay yells a lot for a pretty good reason: people are idiots, and need to be shocked out of unconscious incompetent behaviour before they'll even evaluate the need to change. What kind of incompetent boob makes it to the final of 16 top chefs in the United States, but can't reliably cook risotto or some fish? A professional chef who plates meat and sends it to the pass without checking that it's raw? Someone who under-cooks pasta is going to be the head chef at an up-and-coming brand-name restaurant in a cosmopolitan destination city? Someone who, blindfolded, can't tell the difference between pork and salmon is going to write a menu for a four-star restaurant?

No way. Why would Ramsay attach his name and reputation to such a venture? The people on that show are entirely incompetent and unworthy of the position he's offering as a prize. Sure, it's campy reality TV, but these people have shown up for a job interview and are completely blunderous and under-qualified.

I think he was agreeing with you, and saying that you and Ramsay are right. Basically, he only comes to [H] for the amusement you provide...
 
For a beginning C++ developer, going from a blank canvas to a more-or-less-fully-functioning 3D game engine could be a three or four year time investment, estimating conservatively. Given the right attitude, the right approach to self-education and the right expectations, however, a game engine could be the ideal first project if it keeps the person interested, excited and motivated to learn.
"The right attitude" is tolerating years of perseverance with only some checkpoints as reward, and that is going to be pretty rare. Particularly since a beginning developer is not going to be too good at scheduling or decomposing their own project.
 
Some fairly bold (and unsupported) statements there, which I won't bother to dispel. I will say, however, that the difference between "Java" (or J2EE/JEE) and .Net is far more than a language choice - it is also a choice of ecosystem. The Java ecosystem has an unparalleled collection of third-party (open-source and commercial) libraries, frameworks, containers, tools, etc...and .Net is nowhere even close to Java in this respect.


I also don't have a single client who wants to run Windows in production server farms. They use Linux or Solaris. How much .Net is running there? ;)


BTW, when your Windows client connects to the Windows Update servers, do you think that you are talking to a Windows-based server? Think again. MS outsources it to Akamai...and all those servers are Unix-based. :)
All of my clients want to run hyper-v windows farms, it's all preference. To me .Net collectively is better organized compared to java. Also, Mono allows .net apps on *nix systems now, so it's really just as portable as java.


.Net is hardly a better language/platform. It's a better platform if you're looking to integrate applications into an existing Windows environment, sure, but it has its own limitations. Restricting yourself to a single development environment is not the way to go for looking good to potential employers.

Universities teach Java because it is current and is a relevant language to today's business environments. It has the same potential as many other languages, and requires good coding style and practices. Universities want to teach something that will instill practices that can be applied to future languages, rather than allowing you to fall into bad coding habits.

As far as universities go, there is no restriction of a university "endorsing" a product owned by MS. Look at this statement made directly on our website:
What limitations does .net have that java does not?

.Net is a current and relevant language in todays business environment as well, it's just not free like java is...oh wait, it is, with express. Not to mention, with MS, you can get all your software for free as long as you're just developing. OS, DB, IDE. I will disagree with you and say that Universities teach java because it's FREE - they do not want to shell out the money to MS to keep up their development environments. .Net practices are the same as java, so they can both be applied to future languages - what practices is .Net missing that java has?? Bad coding habits? Pleas elaborate on this, this will be fun to hear. It really sounds like you dislike MS and have no clue what you're talking about.

I use MS products every day. All of my computers run Windows. I have programmed in .Net for a previous job. I hardly have anything personal against MS/Windows. .Net has quirks that can force beginning programmers to become complacent in what they expect programming languages to do. So yes, it has the potential to instill bad coding habits. Every language does, but some are a lot more strict (Java) in what they allow programmers to get away with in terms of when they throw exceptions or deny compilation.

This proves my point above, you really just have no clue about .net and are now making up bullcrap. If you've really ever programmed in .net, you'd know this not to be true lol.

And yes, I've programmed in both. Both are GREAT languages and both have their pluses and minuses. I personally prefer .Net because to me, it's much more organized and integrated than the java 'ecosystem' as someone(educated) above pointed out.
 
Sorry you feel that way, but it would seem that you're only reading (or only remembering) some fraction of my posts.

Yea I guess that's true, but those are the most entertaining ones. If I say something stupid, I'd rather get smacked across the head and informed about it than live in ignorance.

And don't take it the wrong way, I respect what you do here. I hope everyone realizes you are doing the right thing to force people to think more about "why" they are trying to learn about programming. It's just some times you come off a bit rough, that's all.

I still argue that language is irrelevant in the long run, but if you had to choose, go with the one that's lasted nearly 40 years and is the basis for other popular languages with expanded feature sets.The basics of programming don't change between languages, and learning OOP is pointless if you don't understand the fundamentals. But telling people to start with Java or C# means they have to get a "brief" introduction to OOP before they can even print something to the screen, and that just seems wrong.
 
I still argue that language is irrelevant in the long run, but if you had to choose, go with the one that's lasted nearly 40 years and is the basis for other popular languages with expanded feature sets.The basics of programming don't change between languages, and learning OOP is pointless if you don't understand the fundamentals. But telling people to start with Java or C# means they have to get a "brief" introduction to OOP before they can even print something to the screen, and that just seems wrong.

For people who aren't computer scientists, learning a language like VB, or C++ or C is fine. For people who want to be computer scientists -- real software engineers and not "programmers" -- should learn how the machine works. The best way to do that is to work in assembly for at least a little while.
 
Also true, it just feels strange expecting someone to program in higher-level constructs without understanding what's underneath.

Although I had some issues starting with assembly, it was a lot of information to take in when taking 5-6 classes. One we were learning ANSI-C and basic programming, the other we used C++ and Lua to implement basic games in a pre-fab engine, and the last was PIC ASM to move an RC car and blink some LEDs. Maybe if it was only ASM it would have came easier, but jumping around between all of these when you knew nothing about programming a few weeks prior was a bit overwhelming. In the end I focused more on C/C++ and skimmed over ASM more than I should have. We came back to x86 ASM in a few other classes later on and it made a lot more sense.

Getting way off topic, something I'm good at it seems... I saw people talking about Java and C# and OOP and then went back to OP and saw he was asking about SQL and Databases. Both of which I know little about so I guess I don't really have anything to add here, heh.
 
The problem is not that these types of projects are too ambitious for beginning developers but that few will have realistic expectations for how long such projects will take to complete.

For a beginning C++ developer, going from a blank canvas to a more-or-less-fully-functioning 3D game engine could be a three or four year time investment, estimating conservatively. Given the right attitude, the right approach to self-education and the right expectations, however, a game engine could be the ideal first project if it keeps the person interested, excited and motivated to learn.

The only thing that could ever ignite a flame is a spark.
a game engine as a first project???
 
The growing complexity and vulnerabilities of computer networks requires that all auditors have some degree of technical expertise. Price explains, "I used to recruit IT personnel, including programmers, IT department managers, etc., who became very good IT auditors. If they had ITIL [IT Infrastructure Library] skills or something similar, that helped, but in my mind, was not essential."

Hmm....
 
yes that was question to see if thats what you meant, if so then that will be a horribly inefficient plan. Doing something like a game engine should not be a 1st, 2nd, 3rd or even 20th project no matter how smart or dedicated someone is.
 
For IT, learn Unix shell scripting, Windows Powershell, Perl. For application development, learn Java and C#. You can do several projects that cover various programming topics and techniques. The best way to learn is to practice - unless you're a genius and don't need to practice.

Also google web technologies and do some research on what interests you.
 
I return! I want to learn a language because when you interview for IT internships. They normally ask if you have learned a programming language. Although you may not use it, interviewers like to weed out people. I remember using SQL in one of my accounting technology classes. That's why I thought SQL would've been useful. Since I'm still in college, I'm trying to build a skillset and gain some experience through internships.

Thank you for the advice.

I found learning visual basic will go along way for what you want. It give the perception that you can write a basic program to interact with a database and get the job done even if you never use it. I learned VB years ago just because of messing around as a young man and when it comes to auditing positions they all like the fact i know VB though ive never used it in a job.
 
I found learning visual basic will go along way for what you want. It give the perception that you can write a basic program to interact with a database and get the job done even if you never use it. I learned VB years ago just because of messing around as a young man and when it comes to auditing positions they all like the fact i know VB though ive never used it in a job.

If you've gone through the IT Auditing, then post some resources, guides, and additional suggestions for RyuKenLi.

But I am uncertain of the realized value you've placed on your past experience tinkering with some incarnation of VB. You wrote enough to interact with a database, and felt confident that it worked. But this brings a few questions to mind:

1. What is the size/scope difference between that application and those that you are auditing?
Anything from lines of code, development/project team size, number of self- or team-written assemblies, customer/userbase size, support team size, etc.

2. What actual value did (or does) that past development experience provide with auditing projects well above your personal experience?
I assume that most/all of the audits you've done have codebases that goes well beyond your familiarity in scope, importance, single- versus multi-threading, larger design patterns, etc. So in what ways did your coding experience help, if any?


And finally...

Can you describe your involvement with past auditing projects?
Obviously don't mention the innocent or the victims, but a description of your duties, what the software did that was being audited, your team size, the audited party's project team size, what sort of team members being audited you worked alongside, communication plans, etc. This real world information could be very beneficial for RyuKenLi, and have the side effect of diverting this thread to a track that isn't a(nother) fruitless and inept coding language war.
 
Last edited:
First you'll need to study up on electromagnetism and then work into semiconductor physics; this is crucial to understanding how computing machines function, itself a necessary part of being a good programmer.

Next thing you'll want to do is bone up on your basic electrical devices, then work your way through the common logic implementation styles - if you aren't intimately familiar with this then there is a good chance anything you program will be shit.

At this point I recommend taping out and processing some basic ICs to get a sense of the hazards and possible failure points of the processors you'll be working with; with a couple trips to your local hardware store you can probably put together a makeshift super-micron foundry in your basement. Don't worry about about sub-micron parasitics for now - it will be a few years before you are programming on anything that small.

Once you're done all this you'll be ready to start programming. I recommend starting on a processor no more recent than mid-70s; anything later will teach you bad habits at this early stage in your development. The Intel 3000 or AMD Am2900 series are a good starting point, a practical introduction to bipolar devices, and have headroom for upgrades with their bit-slice architecture. The NMOS6502 is also a nice alternative, providing a primer in dual-phase clocking and there are some excellent microscope scans of the decode PLA which offer excellent insight into the ISA.

For this last step make sure you don't use an assembler or monitor; this will ultimately be a huge crutch in your development. It is critical that you follow these steps or there is roughly a 90% chance you'll be a awful programmer.

Let us know once you've finished all this, and we'll advise on your next steps.
 
First you'll need to study up on electromagnetism and then work into semiconductor physics; this is crucial to understanding how computing machines function, itself a necessary part of being a good programmer.

Next thing you'll want to do is bone up on your basic electrical devices, then work your way through the common logic implementation styles - if you aren't intimately familiar with this then there is a good chance anything you program will be shit.

At this point I recommend taping out and processing some basic ICs to get a sense of the hazards and possible failure points of the processors you'll be working with; with a couple trips to your local hardware store you can probably put together a makeshift super-micron foundry in your basement. Don't worry about about sub-micron parasitics for now - it will be a few years before you are programming on anything that small.

Once you're done all this you'll be ready to start programming. I recommend starting on a processor no more recent than mid-70s; anything later will teach you bad habits at this early stage in your development. The Intel 3000 or AMD Am2900 series are a good starting point, a practical introduction to bipolar devices, and have headroom for upgrades with their bit-slice architecture. The NMOS6502 is also a nice alternative, providing a primer in dual-phase clocking and there are some excellent microscope scans of the decode PLA which offer excellent insight into the ISA.

For this last step make sure you don't use an assembler or monitor; this will ultimately be a huge crutch in your development. It is critical that you follow these steps or there is roughly a 90% chance you'll be a awful programmer.

Let us know once you've finished all this, and we'll advise on your next steps.

Seriously! This is exactly what I thought I was reading leading up to this post. Thanks for the summary.

Anyone know where to get vacuum tubes on the cheap?
 
The OP hasn't posted in just shy of a week, so I'm declaring we've reached Phase 7.
 
Back
Top