• 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.

Looking To Get Into Programming

Friendlier error messages along the lines of "java.lang.ArrayIndexOutOfBoundsException at line 23"? Also being easier to diagnose as they tend to fail fast.
I suppose failing early has its merits, but one of the problems with Java (and other insular languages) is that catastrophic failures and anomalous behavior are also possible in the runtime itself. Since you probably don't get source code, you'll have a harder time debugging.

I'm not sure that creating a GUI should be considered a prerequisite to success.

Exceptions are not nearly as mysterious as you imply. I think a competent developer knows how to debug, and one that understands the machine that they're using understands what the exception means. It's developers that stick to the managed languages--as you're recommending--who tend not to learn how to do these things for the simple reason that "they're too hard"--as you're implying. I think that's sad; there are curricula springing up which will stick to languages like C# and Java, and that means they're producing developers who don't know how computers work.
 
What exactly is wrong with the way Java does exception handling?

Also, Why can't good programming habits and algorithms not be properly taught in C# or Java. A lot of whats taught in an academic setting is pseudo-code anyway.
 
It depends on what you mean by "basic". You might mean fundamental, with few bells and whistles. Clearly, that's assembly language. Everything you do is done by you; the only thing between you and the hardware is the OS -- if you have one. You'll immediately learn how comptuers work, what they do, and what lots of fundamental concepts are and why they're important.

If you mean simple, where most of what you learn is releated to the end goal and you don't need to learn very much about context, then I think you might do best to stick with a language like Python. You can do some tasks straight off, not worry about much context (outside of the language itself), and have something to show for yourself.

Speaking of the end goal, why is it that you want to learn programming? Are you trying to further your career? Pick up a hobby? Solve a particular problem that you have with your computer? Learn more about computers, or digital electronics? Something else?

I hope you consider your answers to those questions carefully. If you can identify a concrete goal as well as your rationale for wanting it, you can better identify steps to reaching that goal. If you're trying to solve a specific problem that's realistic (eg, your specific problem isn't "I want to write the next HalfLife!") then you stand a great chance of reaching a progressive milestone towards your goal, and hitting that success and carrying on.

I meet lots of young developers who want to tackle a huge problem, in addition to learning all sorts of things about programming (like GUI design) in addition to the language and the OS they're using, plus some fundamental ideas about what they're doing, that they're simply never going to get anywhere before they get frustrated. Setting realistic and clear goals is very important.

The points that nameless makes in his second paragraph are really salient:

the alternative is to learn in either order 1)how computers work 2)how algorithms work. there is no getting around these two things if you want to do anything halfway interesting with programming. in a formal setting, you learn both at once. on your own, it's a little more difficult.

To be a good software engineer, you need to know both how computers work and how algorithms work. Or, at least, how to use computers and algorithms as tools to solve problems. These are incredibly deep subjects: How is data represented? What's binary? How are characters represented? What're ASCII and Unicode? How does input reach a program? How can a program generate output? How do computesr run programs? What's stored in memory? How does disk data get stored and retreived? What are file formats, and how are they different than in-memory data?

This is all just scratching the surface. And you haven't even gotten to the programming language yet.
 
What exactly is wrong with the way Java does exception handling?
Sounds like you've misunderstood my post.

Also, Why can't good programming habits and algorithms not be properly taught in C# or Java. A lot of whats taught in an academic setting is pseudo-code anyway.
Successfully teaching algorithms must include implementing those algorithms rather than simply providing pseudo-code. Otherwise, there's no realistic ways to demonstrate the efficacy of the algorithm, and no basis for understanding the relative expense of the different operations the algorithm needs to carry out.

Managed languages make teaching development more difficult because they're insular. The cost of operations is masked--in some cases, even overwhelmed--by the costs and lack of predictability inherent in the involved run-times. Further, the richer run-times provide substantial aides that professional programmers need, but less experienced developers will use as a crutch. Imagine trying to teach a student six or eight different ways to sort an array, but having them push back because they've discovered that the run-time provides a method for sorting.
 
I'm not recieving an error of any kind. When I run the file, the command prompt window comes up and then shuts off so fast I can't even read what it is saying.

Edit: Also, when I type in command prompt, "javac filename.java", it says "javac is not a known command..." But when I click Open With and go to the program files where Java is and click on Javac, it complies the file. Any reasons why this is happening?

Open command prompt with admin powers.

SET JAVA_HOME=<install directory for the jdk> (mine was "C:\Program Files\Java\jdk1.6.0_06" quotes are included)
i.e. SET JAVA_HOME="C:\Program Files\Java\jdk1.6.0_06"

then

SET PATH=%PATH%;%JAVA_HOME%\bin

Test by entering the following commands.

java -version
javac -version

Code:
//In Hello.java

public class Hello {
	public static void main(String []args)
	{
		System.out.println("Hello, World!");
	}	

}

From open command prompt. 'cd' in to the directory with Hello.java

javac hello.java
java hello

Output is "Hello, World!" (obviously)
 
Well if you haven't decided what programming language to learn yet, here's some tips I can think of: Someone might say a language is better than some other language but once you learn one it is fairly easy to transfer from language to language. If you keep the language as applied as possible, it doesn't matter how complex it is as long as it makes sense to you. There are languages that are better at doing some things than others, like Java is great for developing for cell phones but if you want to make games maybe go with C# and XNA or C++ and Direct X. It just depends on what you want to do.

If you don't really know what you want to do, or have a goal, then just go to some tutorial website and start trying different languages out and experience what it takes just to program in general and see if it is something you really like. Then once you gain some experience you can start thinking of how writing a program may help you do something.
 
Speaking of the end goal, why is it that you want to learn programming? Are you trying to further your career? Pick up a hobby? Solve a particular problem that you have with your computer? Learn more about computers, or digital electronics? Something else?

QFT. These are the most important questions that a software developer/programmer needs to answer first.
 
"they're too hard"--as you're implying. I think that's sad; there are curricula springing up which will stick to languages like C# and Java, and that means they're producing developers who don't know how computers work.

I believe you misunderstand my reasoning and assumptions here. In general I agree with you.

My suggestion was for a person who as far as I can tell has no immediate support around coding & just wants to start playing around. In this case I recommended a language that I believe is fairly helpful when it errors & won't leave someone in a lot of difficulty when trying to find their errors.
In pretty much any other situation I would recommend something like C.
 
After reading all of your detailed comments, I think I'm gonna stick with Java and then try another language once I've mastered it. Yes, I do have an understanding of how computers work. I'm more of a hardware guy than a software guy at the moment, but hope to change things by learning how to program.
 
I'm more of a hardware guy than a software guy at the moment, but hope to change things by learning how to program.
You're just looking for something new for the hobby, then? What project do you plan on tackling first, as you learn?
 
when you say "hardware guy," do you mean that you etch your own boards, design your own circuits, and build your own computer from the quartz up? or do you mean that you know how to swap some boards in and out of a PC?

the difference comes in what type of advice you'll get. if you are, as you say, a "hardware guy" then you already know the basics of decision making, iteration, recursion, types, and scope. the next part comes in learning how to implement an algorithm. i recommend bubble sort as an easy place to start. after this, try something more challenging like quicksort. compare the running time of the two algorithms on small (100 or so) then large (1 million or so) input sizes. does one take less time than the other? in both cases? why or why not? this exercise will get you to start thinking like a programmer.
 
You're just looking for something new for the hobby, then?
Yes. I'm going off to college in about two years and I'm looking to possible major in Computer Science or Software Engineering, something among those lines.
What project do you plan on tackling first, as you learn?
Haven't decided on that one yet, do you have any suggestions from personal experience?
 
I list a bunch in the Suggestions for Study thread. Since you've got zero experience, though, few of them will be appropriate.

At this point, I think it's important for you to think small: programs that have no point aren't out of the question, as are things that have already been done. Write a program that finds the 10 largest files on your drive, for example. Write code that computes an MD5 checksum of a file, and compare your result and performance to any of the readily-available tools for this purpose. Write a program to sort a list of words, or find out if a single word that you've entered is found in a plain-text dictionary file. Write a program to tell you if a number is prime; and if not, provide its prime factors.

The problem with my suggestions is that they're not interesting to you. You should do something that you find exciting and interesting, so that you'll feel rewarded and accomplished when it's done.
 
You should do something that you find exciting and interesting, so that you'll feel rewarded and accomplished when it's done.

QFT. you have a lot to learn (as we all do!), but learning on your own is impossible unless you are motivated.

what are your interests? i don't mean just your computer interests. what do you like to do?

themoviesomeloveandsomehatebecauseitskindacrude said:
Bart:What is it you like to do?
The Kid: Play Chess. Screw.
Bart: Well, we'll play chess.
 
Once I learn the basics of Java, I'll start off with a basic program like you have stated, such as a program that finds the 10 largest files on my hdd. Thanks a lot mikeblas, appreciate the help.
 
Ok, I did this through Command Prompt, but when I do "javac hello.java",
I get this error: '
javac' is not recognized as an internal or external command,
operable program or batch file.
I get this error message after I set the
directory and all you have listed below in the quote.
Open command prompt with admin powers.

SET JAVA_HOME=<install directory for the jdk> (mine was "C:\Program Files\Java\jdk1.6.0_06" quotes are included)
i.e. SET JAVA_HOME="C:\Program Files\Java\jdk1.6.0_06"

then

SET PATH=%PATH%;%JAVA_HOME%\bin

Test by entering the following commands.

java -version
javac -version

Code:
//In Hello.java

public class Hello {
	public static void main(String []args)
	{
		System.out.println("Hello, World!");
	}	

}

From open command prompt. 'cd' in to the directory with Hello.java

javac hello.java
java hello

Output is "Hello, World!" (obviously)
 
After following the first n00b tutorial, I am proud to say I have generated my first (very basic) program.

dosresult.gif


Thanks guys! Now onto some more programming. :)
 
I recommend starting by doping your own silicon. Once you've managed that you can move up to BJT assembly, and then later MOSFETS. Soon enough you'll be assembling your own logic gates, and who knows what next!

But seriously, congrats on the hello world. It is always the very first program I write when learning a new language.
 
We learned C the first year of college, and then Java. Coming from C to Java, I found it much easier. I am studying Computer Engineering and I have always stayed away from programming because I guess I started off with the wrong language. I enjoyed Java much better. Currently I am trying to learn C++ and I am finding it close to Java in terms of OOP. I do enjoy IC Design still but would like to pick up some programming. I am also trying to switch to Linux....so i wouldn't encourage myself to pirate some more ;-)
 
I would recommend learning C# first only for the reason that you can have visual ui's instead of just looking at a console app, but depends if your a visual guy.

It sounds like you really want to just get to some results because html and javasciprt both deal with very visual things. i would suggest going to C# first and if you still like it after that, which most likely you will then you can move over to C++. have fun =)
 
How's it going, AMD_RULES? Make any more progress? Do you have any more questions for us?
 
Well it appears you decided to start with java. That's cool... nothing wrong with that.

When I was looking at languages, I just couldn't grasp having to write out 6, 8, 10 or more lines of code & then having to compile it just to do 1 little thing, so I chose Python to play around with.

Code:
print "Hello World!"
raw_input()

Exact same results as yours above with less code & no compiling. What could be easier? :D

Probably more money to made in Java though. ;)
 
Back
Top