kanji koohii FORUM
Computer Science / IT / programming - Printable Version

+- kanji koohii FORUM (http://forum.koohii.com)
+-- Forum: Learning Japanese (http://forum.koohii.com/forum-4.html)
+--- Forum: General discussion (http://forum.koohii.com/forum-8.html)
+--- Thread: Computer Science / IT / programming (/thread-5446.html)

Pages: 1 2


Computer Science / IT / programming - Raschaverak - 2010-04-18

Hi,
I'm aware that a lot of people on these forums are active / studying in the fields of Computer Sicences / programming.
I was always intersted in acquiring deeper IT knowledge, and I've decided to get started. I have no specific foundations, I'm just an average PC-user. However this is a relative huge undertaking, and today the IT itself is very specialized, and I don't know in which direction to go. I'm mainly intersted in programming either web -based, or PCb-based, or where you can give the rein to your creativity and personal preferences. My problem is, that I want to put my knowledge to use in the future, in other words I would like to earn some money with it as well, later. So my question would be, which subfield is worth specializing / learning (either at school, or as a self-learner), in IT / computer sciences, with wich you'll probably be able to make some money? I wonder if there can be a parallel drawn betwen learing a programming language, and a normal language, and if yes, could some of those methdos we use on these forums, be applied to it? (like SRS and such).


Computer Science / IT / programming - ThomasB - 2010-04-18

Hello,

Quote:My problem is, that I want to put my knowledge to use in the future, in other words I would like to earn some money with it as well, later. So my question would be, which subfield is worth specializing / learning (either at school, or as a self-learner)
A little bit about your background would be helpful here. There are certain areas of Computer Sciences where in which is rather difficult to make money without a College Degree in that area. On the other hand, there are also areas where experience/knowledge is much more important than a degree. In terms of Programming/Development, you will definitely able to make money, even without a degree in the field if your knowledge is appropriate. Furthermore, there are also various IT-certifications out there which certify your knowledge in specific areas. These can often be used as a proof of credibility/knowledge instead of a college degree.

Quote:I wonder if there can be a parallel drawn betwen learing a programming language, and a normal language, and if yes, could some of those methdos we use on these forums, be applied to it? (like SRS and such).
Not really, no. The difference is that learning a programming language is not about learning the language itself. It is about learning how to use the language efficiently (uisng Libraries, etc) and understanding the general concepts behind it. For example, if you have extensive experience in one or two (rather different) languages you won't have any problem picking up a new language within a few days! It's not about the language itself, its about the differences in usage. There are certain typical applications which fit with certain languages. For example:
- You can use Perl, etc to write scripts for specific purposes, especially for parsing text/analysis with regular expressions
- You can use .NET Framework and .NET languages to write Windows-based applications as well as Web applications.
- You can use Java to write platform-independent applications and Web applications
- You can use C/C++ for writing performance-sensitive applications closer to the hardware side
And so on... Of course these are just a few extremely simplified examples.

Therefore, learning about Programming in general (together with your first language) will be the first and also most difficult step. It's not learning the language, it's about learning the way of thinking / theory behind it.


Computer Science / IT / programming - wccrawford - 2010-04-18

Which fields are profitable? All of them. Pick one you like and learn it inside and out.

If you don't like ANY of them, and are just in it for the money, give up now.

Speaking as one of the people who makes hiring decisions at the company I work for, we don't hire anyone who doesn't love the job they are applying for so much that they do it in their free time. If you're in it for the money only, there's no way we'd hire you. And you'll find that all the good places to work are the same.


Computer Science / IT / programming - xquio - 2010-04-18

Networking/security pays good, and it's something that can be easily done without a degree. Of course, certifications help a lot, but certs are fairly easy to get if you're knowledgeable about that field. And studying for certs is a good way to become knowledgeable. But, IMO, it's a very difficult and abstract field and if you don't really like it, it's going to be impossible.

But, yeah...you should probably just choose what you like and go with it. IT is still in demand and so long as you're good at what you do, you're pretty much all set.


Computer Science / IT / programming - Raschaverak - 2010-04-18

Thanks for the reply guys. I really don't know why you assume that I would only be in IT for the money. Nope, not at all. I have been interested in IT for a long time, but back then when graduating secondary-school, I wasn't good enough in mathematics to get into an IT course at a university Sad
But since japanese ate a lot up from my free time, and I've started leraning this language without the slightest hope of ever making a dime with it, I thought that the next huge unertaking of mine should be something that I like, AND maybe profitable, meaning worth spending my free time with it. By the way, I don't know how much of a hindrance it really is in IT / computer sciences if someone is not really good (or at least not outstanding) at mathemtaics.

wccrawford: I don't know, but you can't really love something until you've tried it, no? I'm interested in IT / computer sciences, and willing to invest my time into it...isn't that enough? When I choose a sub-field, and specialize in it, then it might turn into "love", but until then, I have to keep seraching for this field.
Actually there is one field in science which I've always loved, and I will love till the end: astronomy..but unfortunately I can't really make money with that, unless I was highly talented (which I'm not), so I'll have to fall back on the second best thing in my field of interest: IT / computer sciences. Smile


Computer Science / IT / programming - ThomasB - 2010-04-18

Quote:By the way, I don't know how much of a hindrance it really is in IT / computer sciences if someone is not really good (or at least not outstanding) at mathemtaics.
As long as you don't get into the theoretical aspects of Computer Science you don't need much Math at all. However, the way of thinking in Math and the way of thinking in CS can be very similar and people who are good at Math often have no problems picking up CS concepts.

It also depends on what kinds of mathematical concepts you are talking about. CS is closely related to discrete Math (such as Logic). If you are not good at things like Calculus, well, that doesn't mean anything.


Computer Science / IT / programming - Blahah - 2010-04-18

It's worth keeping in mind these two things:

1. you don't actually have to specialise in something to be able to earn money from your skills. Often, have a range of skills from complementary disciplines will make you stand out from the rest.
2. if you do end up specialising, it's almost certain in won't be in what you set out to do - it will be something unexpected that arose out of a project/job and you ended up knowing inside out.

Bearing those things in mind, I recommend learning a programming language and HTML (with CSS) simultaneously. An awesome way to get to grips with the whole subject is to make a website which includes some web app (for example a personal goal-tracking website) and a desktop program which interacts with the online system.

Python is a good language for beginners, and Javascript is also very powerful these days and is likely to be involved in the future of the web. PHP is also strong for webapps. Both will allow you to create powerful applications and will get you working with the concepts you will need in more complex programming. By setting yourself varied projects, you can learn in depth about various aspects of computers, such as networking, security and vulnerabilities, algorithms etc.

If you aren't going to go the traditional qualification route then it's important to be able to prove your skills to potential employers, and having a good portfolio of projects is a great way to do this.


Computer Science / IT / programming - FooSoft - 2010-04-18

You're right, it is a large field. I think the only way you can really determine what you really like is to try all of it, a little bit at a time. Doing web development is an entirely different beast than doing game development for instance. The requirements and technology across these fields varies a lot.

Computer languages are really nothing like normal languages. You might have a "vocab" of like 40 keywords in the entire syntax. In fact, there is very little memorization involved in learning a language. Sure, you could memorize how to use certain libraries, or certain algorithms but in reality nobody actually remembers them (or cares to) in real life. Why would you, when anything you could ever need is just a google search away? In fact most of the libraries you would use change so often that memorization is just pointless.

Learning programming is all about learning the concepts. What is encapsulation? What is efficiency? What is Object Oriented Programming? None of these ideas change from one language to another (in a substantial way, anyway). So once you learn a language, you can easily ramp up and be productive in another one in just a couple of days. I would compare these ideas to "grammar" perhaps, where you just need a lot of practice and exposure to be able to utilize the languages like a professional. The only way to do this is to go write code, make lots of mistakes, and learn from it Smile

Edit: I should add that you pretty much have to have a B.S. degree to find a decent job.


Computer Science / IT / programming - Raschaverak - 2010-04-18

FooSoft Wrote:The only way to do this is to go write code, make lots of mistakes, and learn from it Smile
That's exactly what am going to do. I've just decied that my first project will be a kind-of kanji dictionary, online. It's going to be very primitive, basically, giving in a kanji and giving back one keyword. Of course the web is full with stuff like that, but in my native language, there is no such thing. You could only buy a book, but that only gives a keyword for the first 1000 kanji or so. So my program would give keywords (one keywod only) for a kanji and vice versa, all in hungarian, up to the Heisig's 2042nd kanji. My question would be now..hmm...how do I start? Smile Ok, that's lame, but more specific, what are the possibilities of putting this idea into action? Like, which programming-languages should I use? Of course this whole idea is a waste, if there is a hungarian version for the english dictionaries out there, but I highly doubt it...


Computer Science / IT / programming - FooSoft - 2010-04-18

Well, you will definitely want to learn HTML and CSS (Cascading Style Sheets) first. This is needed for creating any sort of real web sites. These are not programming languages per-se since they don't execute (it's just markup), but it's something. For this you just need a text editor and a web browser Smile

After that, you will want to write the back-end (code to process search queries, etc), which will probably be PHP. To play around with server stuff you will either want to install Apache on your home machine along with PHP, or pay for hosting somewhere (it's cheap, for my site I pay like 8$/mo, I use dreamhost).


Computer Science / IT / programming - ThomasB - 2010-04-18

I agree. If you are interested in Web Development start with HTML + CSS. These are not programming languages but absolutely necessary for everything that follows. You won't get around learning at least the basics. If you search in Google, you will find tons of good tutorials out there. As for tools to use, if you want to be very primitive, go with Notepad++ (notepad-plus.sourceforge.net/). There are many advanced applications (I recommend Adobe Dreamweaver), but you probably won't be able to appreciate them until you have gained a little bit of experience.

For the backend you then have tons of possibilities. Like FooSoft mentioned above, PHP is a good choice. Personally I never have gotten to like PHP (usually use ASP.NET), but PHP is more common, platform-independent, and not that complex.


Computer Science / IT / programming - Montrealer - 2010-04-18

Raschaverak Wrote:...I've just decied that my first project will be a kind-of kanji dictionary, online. It's going to be very primitive, basically, giving in a kanji and giving back one keyword. Of course the web is full with stuff like that, but in my native language, there is no such thing. You could only buy a book, but that only gives a keyword for the first 1000 kanji or so. So my program would give keywords (one keywod only) for a kanji and vice versa, all in hungarian, up to the Heisig's 2042nd kanji. My question would be now..hmm...how do I start? Smile Ok, that's lame, but more specific, what are the possibilities of putting this idea into action? Like, which programming-languages should I use? Of course this whole idea is a waste, if there is a hungarian version for the english dictionaries out there, but I highly doubt it...
This sounds like a very doable first project. Here are my suggestions for developing it in two steps:
(1) First read a little on HTML and CSS and design the pages that you want. Take note what interactivity (buttons, fields, etc.) that you want to appear there, and what you want them to do. What content on the pages is static, and what should be supplied dynamically by your system?
(2) Next, read about PHP (and MySQL). These simple tools should be more than enough to quickly add the functionality you want to the pages. You will need a foundation in Relational Databases (designing tables, SQL, etc.) as you move forward.

As for an environment, I'd suggest downloading and installing XAMPP and Notepad++. XAMPP is a freely available version of Apache (a web server), MySQL (a database), PHP and Perl (2 languages). Notepad++ is a good free editor. Both are easy to set up.

There are other more powerful tools out there, but giving lots of options at the beginning may be too much. For example, for later projects you may want to look into switching from Notepad++ to either NetBeans or Eclipse, but using them for a first project would be overkill and you'd most likely be overwhelmed by the tools instead of being able to make them work for you.


Computer Science / IT / programming - aphasiac - 2010-04-19

I really recommend this book for getting started with HTML / PHP and MySQL development:

http://www.amazon.com/PHP-MySQL-Web-Development-4th/dp/0672329166/ref=sr_1_1?ie=UTF8&s=books&qid=1271666298&sr=1-1

I went from knowing no PHP to writing a large scale online asset database, using that book (but then I studied computer science at uni). PHP is an easy language to learn, would be a good first language to start coding in I think..

Also in my experience of working in the IT industry, with no IT qualifications the only job you'll be able to get either desktop support or telephone helpdesk role. Then you can try and work your way up to network admin. To be a programmer you'll need either a lot of experience or a degree (not necessarily computer science, maths or physics would do).

To do a more specialised role (e.g. network security, Windows server maintenance, CISCO support) you simply need officially recognised certificates, which are quite easy to obtain though expensive (you can even study them online). This option is also the more lucrative financially, so if you want to make money this is the best thing to look into.


Computer Science / IT / programming - Blahah - 2010-04-19

W3Schools is a good place to learn the basics of HTML, CSS and PHP...
http://www.w3schools.com/

All their lessons are free and from there you will be able to make very simple projects.

Choose books after you've got the basic stuff down. Also get yourself a free web host which has PHP, and then you can experiment with it. You can also make a local PHP installation to play with... http://www.ultraedit.com/support/tutorials_power_tips/uestudio/local_php_mysql_dev_environment.html


Computer Science / IT / programming - Nemotoad - 2010-04-19

I'm not a programmer but I play one on TV. I'm surprised no one has mentioned Ruby here considering it was invented in Japan by Yukihiro “matz” Matsumoto!
http://www.ruby-lang.org/en/

I picked it up less than a day recently and was able to process a dictionary for my French studies. Mind you I program regularly in Perl so compared to that it was a breeze. ;-) However I think generally Ruby is quite easy even for beginners, and it's a very simple, elegant and readable language while being just as powerful as Python. A lot of web sites these days use Ruby on Rails as their web framework, which makes it easier to handle HTML/CSS and MySQL databases and the like. Between Ruby and Python there is hardly any difference, both are portable and a lot more powerful than PHP. I find Ruby more consistent in its syntax and easier to understand. The absolute beginner's tutorial linked to from the link above is one of the best written tutorials I've seen.

As a non-programmer, I've programmed in Perl, Python, PHP and Ruby (all with MySQL/CGI stuff also), and I've found Ruby to be the easiest for me to pick up. Mind you, I did pick up Ruby last after doing all these other languages. ;-) In general though I found it easier to use for the web stuff I was doing than PHP, but I think it depends on your background. If you do Python or Ruby you'll find it easier to pick up Java (speaking as someone trying to learn Java right now). You'll spend less time tearing your hair out.

Generally if you pick up any one of the programming languages mentioned in this thread, and start using it to build something, it will be super easy to pick up some other scripting language later. I'm glad I started with Perl, because it was such a painful headache of a language I think if I had started with elegant, easy Ruby I would have been really angry with Perl's punctuation diarrhoea and would never have tried to pick it up. However if you don't need to do a lot of intricate text manipulation you don't need Perl, Python or Ruby will do.

I also recommend that if you're using Windows, to download cygwin or some linux/unix environment for Windows and start learning how to use the command line. It would also help to learn how to use emacs or vi if you become a software developer.

I have an Arts degree, and er, my job title at one point was actually software developer (although I'm not really one). So it can be done (though I may have been lucky). I know at least of two others, one who was a musician (learned programming on the job) and another who was a high school dropout (my uber-manager) who was able to get jobs because of his programming skills. If you're analytical and detail-oriented you can easily pick up a programming language (the first one might take a bit longer). A lot of internet startups hire people without degrees as long as you can do the work and can pass the programming test. Of course you might get a lot more money if you have a degree. ;-) Anyway good luck!

tl;dr Learn Ruby (or Python), they're both more versatile than PHP.


Computer Science / IT / programming - thurd - 2010-04-19

Do it for fun and never for a paycheck. Thats how it works for me, if I do it privately I enjoy it, once somebody pays me to do it (no matter how much) it stops being fun.

Maybe thats the mechanism that keeps open source going.

If you want to learn how to program buy yourself one of those "from 0 to hero" books (like Thinking in Java) for one of those "fun" languages (Ruby, Python, Java, in decreasing order of easiness/enjoyment) and start there. It will teach you all things needed and used when programming and is a really nice for a complete beginner. Once you finish you should just start working on your own project (if you didn't already), experience is the best teacher here.


Computer Science / IT / programming - Tobberoth - 2010-04-19

Personally I hate PHP. If it's programming you're interested in yet want to put stuff online, go with Python and Django or Ruby and Ruby on Rails. You still need to know HTML and CSS though, of course.


Computer Science / IT / programming - ThomasB - 2010-04-19

Whenever the topic of programming comes up it's inevitable to avoid the discussion of people's different favorite languages Wink

Raschaverak: Don't let it confuse you. Start with HTML + CSS. Whatever you do after, it doesn't really matter! Any of the mentioned languages/frameworks will introduce you to programming. You can do almost everything you need to do with any of the choices. The best part however is that one you got a little experience in one or two languages you won't have many problems picking up others.

By the way, most of the languages here are scripting languages, not programming languages. They are however sufficient for most things you will need to do in Web development (Though not for Client development). If you are interested in "real" programming like it is taught at universities, check out this website: http://wla.berkeley.edu/ . It has webcast lecture for the first 3-4 introductory courses for Computer Sciences majors at UC Berkeley.


Computer Science / IT / programming - liosama - 2010-04-19

http://www.amazon.co.uk/exec/obidos/ASIN/0201485419/albionresearc-21

Probably the best book out there for true foundations. The good thing about programming is that you can go through an entire book by yourself, visit a local programming forum, post questions (that are well thought out that is), they don't spoon feed you. And you'll get there eventually.

I only did as much programming as was required by my engineering degree, though I did take extra units on Microprocessors and stuff but that was all really.

But yes, from my experience the most fundamental part is nailing down algorithms. This is the mental language if you will, of computer programming languages, not unlike a human mental language, of all human languages.

And to answer your question about parallels. Inspiration for computer languages actually kind of came about from linguistic theory on syntax, structure, etc. But as far as SRS on this stuff goes, I vowed to never talk about it since it ends up in pointless debates, my opinion: It's horseshit nonsense to do so, My advice: Your life

Holy shit you guys know your scripting well.
<b>

Tongue


Computer Science / IT / programming - ThomasB - 2010-04-19

Quote:But yes, from my experience the most fundamental part is nailing down algorithms. This is the mental language if you will, of computer programming languages, not unlike a human mental language, of all human languages.
I doubt that this is true for the real world. Yes, in school there is heavy focus on Algorithms and it is certainly an interesting and useful topic. Most of the universities prepare you for an academic career, not a professional one. For real world development, unless you are working in performance-sensitive areas (where you probably won't get into without a degree), it really doesn't matter. No one cares if you know how to write a Radix Sort, Traverse a directed graph with Bellman-Ford, calculate an MST, or whatever. Why? Because most of this is already implemented for you in the libraries. You make a simple library call, done.

You can be a pretty good developer without any of the algorithms taught in school. This is especially true for web development, where knowledge about databases, security, etc is much more important. If you are writing scientific of hardware-close applications, then that's a different story.

I used to work as a programmer for several years before I got my degree in Electrical Engineering & CS. Before I got the degree, I didn't even know what a Binary Tree is. Was I still able to do about everything I wanted or was expected to do? Yes, definitely. I even developed and designed a rather complex Content Management System almost by myself, without any knowledge about algorithms taught in school.

Many people who graduate from school have good algorithmic knowledge. If you tell them "you got this input, I want this output, do it polynomial time using only a certain amount of space" they can do it.
If you tell them "Make a simple Kanji dictionary and put it online", they are lost Wink


Computer Science / IT / programming - mentat_kgs - 2010-04-19

Yes it does matter.

Algorithms are essential even for Web programming. Each day software becomes more and more complex and a solid base on Algorithms complemented with Modeling skills is a great asset for your toolbox.

It is not about doing it in polynomial time. It is about doing it correctly.
Calculating the complexity of every piece of code you do is useless, but choosing the correct data structure is vital.

What is arguable is if that College teaches algorithms properly.
I know that my course didn't. I had to learn it by myself, the same way you probably did.

I totally agree with your last paragraph.


Computer Science / IT / programming - ThomasB - 2010-04-19

This goes a little off-topic, sorry about that.

Quote:Algorithms are essential even for Web programming. Each day software becomes more and more complex and a solid base on Algorithms complemented with Modeling skills is a great asset for your toolbox.
You are throwing Algorithms and Modeling skills into the same sentence. But they are two very different things. I agree with you in that Modeling Skills ("Software Engineering") is vital for everybody, but Algorithms have nothing to do with that. Writing clean, extensible and well-designed code has nothing to do with knowing how to write a MergeSort. Algorithms/Software might become more complex but that is below your abstraction layer. Again, if applications become more complex, then it is modeling, not algorithms.

Quote:It is not about doing it in polynomial time. It is about doing it correctly.
Calculating the complexity of every piece of code you do is useless, but choosing the correct data structure is vital.
Again, choosing the correct data structure does not have much to do with Algorithms. It's a design choice (see Modeling above). Algorithms come into play if you are building the data structure.

Of course maybe our Definitions of Algorithms are just different. If look at it strictly, everything you do to solve a problem is an algorithm, even if it's only summing up a bunch of numbers. When I say algorithms however, I am talking about the "common" algorithms discussed in school (and covered in a book like liosama posted above). Things like Sorting, Searching, Trees, Graphs, etc. Maybe that just caused confusion about my post above.


Computer Science / IT / programming - mentat_kgs - 2010-04-19

Quote:solid base on Algorithms complemented with Modeling skills
Check my sentence again. I said "complemented" in the sense that they work best together.
1 + 1 = 3
I _never_ said they were the same thing.

To chose the best data structure has a lot to do with algorithms.

A stack, a linked list, a priority queue, a hash, a heap, a tree, etc. They all have their pros and cons, and to use them well, you need to know what they do and at least how long they take to do it.

Writing clean, extensible and well-designed code has a lot to do with knowing how data structures work. You won't be writing them again, that's ridiculous. But you need to know how they behave. This is algorithmic knowledge.


Computer Science / IT / programming - johnrb - 2010-04-19

My advice:

Find a problem, make lots of mistakes and learn from them. Try using whatever languages you want, find where it was inadequate and base your next decision on those facts.

It's an iterative process; don't mind tossing code if you deem your approach invalid.


Computer Science / IT / programming - Tobberoth - 2010-04-19

ThomasB Wrote:Many people who graduate from school have good algorithmic knowledge. If you tell them "you got this input, I want this output, do it polynomial time using only a certain amount of space" they can do it.
If you tell them "Make a simple Kanji dictionary and put it online", they are lost Wink
Yeah, people have a tendency to forget one of my basic principles when making software:

If it works, it good code. Once you have good code, make it better.

If your plan is to make a dictionary, make a dictionary. Getting stuck in theory only keeps you back. If the original plan is sound, optimizing it later won't be a problem. Optimizing every bit so much as you go that it never becomes usable, now that sucks.

"Check my dictionary app! It loads in less than 1 second!"
"Cool. So can you look up kanji in it?"
"What? No, it just loads. But it's fast!"

I agree with mentat that knowledge of algorithms is important, but this is definitely for the later optimization point. If you need a list, use one which works. If you later realize your solution is a bit slow, pick a different data structure.