Big door just opened.
I'll do a short one here.
At the school I'm attending, I've been given the option for an independent study. Pretty much means I can learn about anything I want with anything computer related. It has to be able to be done on some sort of desktop/laptop computer. Also, the school will, within reason, pay for all text books that I may need. (Not sure what within reason means right now, but we'll see)
Anyways, I believe I've said this before, but for the sake of this thread, I'll say that I have intermediate/high level knowledge of HTML/CSS, a beginner knowledge of Javascript, beginner knowledge of Java, and a very intro knowledge of C.
So I ask you this, what would be some good languages for me to learn? I can work with anything at this point. Something that can (and is) used across the board. It can be Web dev, languages like C, or hell, I can even learn forms of linux and unix and so forth.
Feedback greatly appreciated.
Awesome! Damn, I wish I was lucky enough to be allowed to spend school time on things like that. ;)
Programming languages are generally a matter of opinion, but the general understanding is that you should have a high level and lower level programming language, at the very least. For high level there is stuff like Python or Perl, and lower level there are things like C or C++. PHP is very useful for web-related stuff. There is also Assembler if you really wanted to have fun (very low level processing). I'd stay away from Java, it has it's uses, but many people just overuse it far too much.
Learning Linux would be a massive skill. You learn a lot just through using it. Most beginners start out with Ubuntu, but if you were experimenting you might want to try a server distro like Debian and install things on that. If you really wanted a challenge, try Gentoo. There are other distros that people prefer as well, I think Arch linux is pretty common for the guys locally at HBH.
If you wanted to mess with WebDev, learning AJAX would be fun. It allows you to make more interactive webpages, and is actually really powerful. You might even want to mix it up and try installing Debian and setting up a LAMP server to test your AJAX and PHP stuff on, and you could set up hacking demos on it (MySQL injections, XSS, etc..) ;)
There is a lot stuff to learn there. I can almost guarantee you won't learn all of it in the scope of the time you are being given, so you may want to pick and choose from that information. Hope this helps! :)
stealth- wrote: For high level there is stuff like Python or Perl
Is there an advantage over one or the other? I've heard of them many times, but I'm unsure as to the advantages one has over the other, and what exactly their functions are. (will google tomorrow)
stealth- wrote: and lower level there are things like C or C++. PHP is very useful for web-related stuff.
I've debated C and C++. From what I remember, C++ is a simpler, and more "polished" (as polished as C can get). Again, is there an advantage over one or the other?
stealth- wrote: Learning Linux would be a massive skill. You learn a lot just through using it. Most beginners start out with Ubuntu, but if you were experimenting you might want to try a server distro like Debian and install things on that. If you really wanted a challenge, try Gentoo. There are other distros that people prefer as well, I think Arch linux is pretty common for the guys locally at HBH.
I'd probably take on one of those. Only problem is, is that at the end of the independent study, I'll have a final project in which I'll have to show what I've learned and how it is/was useful. I'm unsure as to how to do that with any form of Linux. Thats something I'd need to work on.
I've debated AJAX, but I think I'm more interested in coding programs and working with OSes. While webdev is fun, and can be rewarding if your site becomes popular, its not really my "flow" so to speak.
stealth- wrote: There is a lot stuff to learn there. I can almost guarantee you won't learn all of it in the scope of the time you are being given, so you may want to pick and choose from that information. Hope this helps! :)
I'll have an entire school year, every day, from September '11 to mid June '12. And possibly the next year after that as well. That depends on how things go, etc.
And yes, it was helpful! much thanks! Also, this is only High School, so the teacher that resides over me won't be able to help for shit, but I'm confident I can come to this website for help. coughGoogle first ;) cough
RedSixWhiskey wrote: Is there an advantage over one or the other? I've heard of them many times, but I'm unsure as to the advantages one has over the other, and what exactly their functions are. (will google tomorrow)
I've debated C and C++. From what I remember, C++ is a simpler, and more "polished" (as polished as C can get). Again, is there an advantage over one or the other?
It's really a matter of personal preference in those situations. I don't know C++ or perl, so I wouldn't be fit to really offer a in-depth comparison of the particular advantages and disadvantages, but people generally recommend the languages they already know. The main difference between C and C++ is that C++ supports OOP. As for Python and Perl, I believe that Python has a larger userbase, although I'm not 100% of that (and spyware will likely argue with me ;))
I'd probably take on one of those. Only problem is, is that at the end of the independent study, I'll have a final project in which I'll have to show what I've learned and how it is/was useful. I'm unsure as to how to do that with any form of Linux. Thats something I'd need to work on.
Agreed. That's why I was recommending a sort of combined project, as it can have a more defined goal.
Perhaps you could set up a Gentoo/Other linux hypervisor that runs some VMs, and then demonstrate networked attacks between those VMs? You could create tons of unpatched virtual machines and try all sorts of things in your virtual internal network. That way you would learn a lot about tools such as metasploit, while also learning how *Nix and Windows boxes work and can be exploited. Someone else might have some other suggestions for *Nix projects, also.
And yes, it was helpful! much thanks! Also, this is only High School, so the teacher that resides over me won't be able to help for shit, but I'm confident I can come to this website for help. coughGoogle first ;) cough
No problem, and yup, you ask pretty well thought-out questions and seem to do your research first, so I'm sure a lot of us don't mind helping with any questions you might have.
stealth- wrote: [quote]I've debated C and C++. From what I remember, C++ is a simpler, and more "polished" (as polished as C can get). Again, is there an advantage over one or the other?
It's really a matter of personal preference in those situations. I don't know C++ or perl, so I wouldn't be fit to really offer a in-depth comparison of the particular advantages and disadvantages, but people generally recommend the languages they already know. The main difference between C and C++ is that C++ supports OOP.[/quote] Mostly, but with that comes a lot. To be perfectly honest, the question is a very newbie one, though that's not a bad thing, it's just that people new to the languages are always so lost and in such a tiresome mindset of strict separation of the languages. You can not really learn C++ without learning a very generous amount of C. C code will compile with C++ code and while you can stave it off for a little longer with C++, you are going to have to learn the most basic bits of things such as getting used to a statically typed language, learning of types, dynamic memory management, pointers, etc. C++ will probably ease you into it, but there is no reason not to learn the commands in C as well, e.g. malloc vs. new. Mix as you wish really, sometimes you'll find that things are easier handled with the old C way. Some of the good parts added in C++ is that it has a fantastic standard string class which'll save you a lot of headaches, it allows for references, it has templates and the ability to use classes leads to a lot of easily made and handy structure that you would normally not get. Operator overloading also makes this very handy as it can allow for, to us, logical operations on a class that'd normally not work and thus makes things much more intuitive.
So essentially, there isn't really such a thing as only learning C++, if you choose that, you'll have an easier time and the amount needed to be sacrificed to pick up C is minimal. This translates to: learn both, start with C++.
Avion wrote: I would highly Recommend learning Batch also known as DOS (can be used on ANY windows based computer) the language may be very simple and ancient but it is extremely powerful I wouldn't highly recommend Batch. It only runs on Windows and it's not that powerful.
If you wanted, you could learn batch as well as some of the other languages already mentioned.
Avion wrote: I would highly Recommend learning Batch also known as DOS (can be used on ANY windows based computer) the language may be very simple and ancient but it is extremely powerful
By the way you have no idea how freaking lucky you are that you have Independent Study enjoy it
Batch should be the least of what you need to learn. People who think batch is the best thing ever, obviously have no idea about CS or the like.
Stick with C/++.
starofale wrote: [quote]Avion wrote: I would highly Recommend learning Batch also known as DOS (can be used on ANY windows based computer) the language may be very simple and ancient but it is extremely powerful I wouldn't highly recommend Batch. It only runs on Windows and it's not that powerful.
If you wanted, you could learn batch as well as some of the other languages already mentioned.[/quote] Why not batch, I mean it wouldn't hurt. It would certainly teach formatting. I know that there are better methods for this, but it is the easiest to practice on almost any computer. :ninja:
Elu-veit-ie wrote: Why not batch, I mean it wouldn't hurt. It would certainly teach formatting.It teaches bad programming practices like use of GOTO statements.
Elu-veit-ie wrote: but it is the easiest to practice on almost any computer. :ninja:As long as it's running Windows.
C programs can be compiled and run on any OS and you are able to do a lot more with C than you can with Batch. If you want to learn Batch, make sure you learn a 'good' language as well.
Elu-veit-ie wrote: [quote]starofale wrote: [quote]Avion wrote: I would highly Recommend learning Batch also known as DOS (can be used on ANY windows based computer) the language may be very simple and ancient but it is extremely powerful I wouldn't highly recommend Batch. It only runs on Windows and it's not that powerful.
If you wanted, you could learn batch as well as some of the other languages already mentioned.[/quote] Why not batch, I mean it wouldn't hurt. It would certainly teach formatting. I know that there are better methods for this, but it is the easiest to practice on almost any computer. :ninja:[/quote]
Dude, forget batch. Install a Linux distro and learn bash-shell scripting. I got a real dual-boot with PCLinuxOS not too long ago and it's so powerful that you end up reverting to the CL way of doing things over the GUI way subconsciously, daily, whereas in Windows, even people who know batch only use it ever so often.
About the whole Python vs Perl thing, like has been said, it's really a matter of preference. One thing about Python is that not only is it intuitive to the fact that you bang out code quickly, it's also very concise though the whole indentation/80-char wide limit (not really a limit, but how properly formatted code is supposed to be) can get annoying (and I find that those two limits clash). Perl is said to be a language where there are multiple ways of doing things which while making it versatile can make it a pain to read or configure someone else's code; hence it is sometimes called a write-only language. It has also stood the test of time having been around for the longest.
There's another language called Ruby. Does anyone here have any experience with it?