Website Feedback
Closed Threads
IRC Chat irc.quakenet.org #teamliquid
IRC Web ClientTeamSpeak 3 (82 users) | |
|
tofucake United States. July 07 2010 21:59. Posts 11421 | Profile Blog # |
Thread Rules 1. Try to stay on topic. Minor deviations are acceptable/understandable. If it goes too far/on for too long I'll have to tattle. 2. Don't post a huge block of code and ask "what's wrong?" or I'll smack you. 3. ? 4. Profit.
Look! An IRC channel! (#tl.code)
A Pretty Good Blog
These are really good posts. Everyone should read them.
On January 29 2012 17:02 Crazyeyes wrote: Alright, I've got a little question for you guys. I'm currently in third year university, major in computer science. Before University, I honestly didn't even know what programming was.
So anyways. As I've mentioned, I'm third year. All of my knowledge in computer programming comes from my classes. I'll admit I'm not the best student, but I do pay attention when I can and I'm not exactly failing my way through this. I don't ever program on my free time or read programming-related things that aren't school related.
So far, we've pretty much only learned Java when it comes to useful programmming languages. I did a bit in Scheme, a very small amount in Assembly (I forgot most of it, honestly. It was horrible), some HTML... and I'm currently learning C. Much harder than I expected. Pointers sorta confuse me sometimes.
The thing is, I feel like I don't know anything. I feel like pepole who have way less education than me are more capable than I am. I've never said "I've made a script to do...." I dont even know what that is.
What I hope is going on is that I'm being given the basic (and hopefully more advanced, too) programming skills and knowledge that can be applied to all computer science, and then the more specific things I'll be able to pick up without too much effort. I'm hoping that when I sit down and am told to do X at some random job, I'll be able to do it and be surprised with how much I know. I'm just not very sure.
So, to any of you who come from a similar background (learned everything at school), can you shed some light on your situation? Is this normal?
On January 29 2012 17:54 Abductedonut wrote:I can say that this is a direct result of learning java first. I know lots of students who come from java without any prior programming experience and C/Assembly is horrible to them and they don't feel like know "anything." Here's the basic truth.... Computer Science isn't all programming. Programming is how you APPLY the concepts you learn in computer science. To use an analogy, you're learning how to build a car from inside before actually building it ( programming ). Algorithms and data structures and classes like that teach you when to use a V8 engine rather than a V12 engine... etc etc. So if I were to basically list out languages from lowest level to highest, it would sorta go like this: - Machine Language - Assembly - C - C++/Java/C#... Machine Language is pretty useless to learn from what I've seen. Assembly is SUPER important because C/C++ code eventually gets translated to assembly. It's important to learn what happens on the lower levels when you create a function in C. You want to know how C sets up the stack and all that, and that's how knowing Assembly Language helps. Anyway, I digress. As you learn C, you will realize that you'll slowly become "pro" at programming. No bullshit things like objects and code written for you in C. C really is a no-bullshit language, and you have to know exactly what you're doing or else you'll spend majority of your time fighting the code. C will introduce you to wildly advanced topics like returning ANY type of data from a function (void pointers), passing entire functions as arguments, or returning entire functions ( function pointers )... hell you'll even learn neat tricks like optimizing switch statements by using function pointers. You'll learn EXACTLY when to pass things by reference and EXACTLY what happens inside your code. No more "let's change this and hope it works!" C is THE nerd's computer language. Most people in this thread will come in here and argue that java, python, whatever language they use is better and it might be true, but you don't "truly" learn to program unless you do so in C. Once you're completely comfortable with the basics on C, I suggest you work on mastering these topics: - OS APIs... ( WIN32 API, int 0x80 system calls.. ( basically linux system calls )... dunno what trashSX uses... ) - Network Programming ( Sockets, TCP/UDP ports, sending GET/POST through C for port 80 ) - Multi-threaded Programming - GUI Programming using OS APIs... Avoid using things like QT's drag and drop GUI builder because you won't learn anything - * This list in incomplete, but that's all that comes to my mind atm. I could mention things like global keyboard hooks, directX hooks, etc, but you'll discover those as you want to do certain projects. Will add stuff if I can remember it for the future! * Once you've got all that down, you'll pretty much be able to program "anything." Your CS classes will come back remind you what search algorithms, data structures, and boolean logic to use to make your programs better. At this point, when you move onto other languages it will be more about syntax. Your questions will shift from "Well how do I connect to a server?" to "Where can i find the socket API to this language?" You'll know what you need, and it will just be a matter of how to find it. I've gotten to a point where I can learn languages in about 2 hours. I learned how to program in matlab to help my friend out in under 20 minutes. I learned javascript programming for Adobe After Effects in about an hour and I was able to help visual effects artists modify various features of their shots by writing scripts for them. That's my suggestion to you. Learn C, then go back and touch over assembly and you'll be able to program in anything. Now... if you want to be a TRUE nerd and pwn EVERYONE at programming... start learning how to hack/crack/reverse engineer software. Hacking requires you know everything about everything, and it will open up your eyes to programming like you've never seen before. You'll learn how accidentally using a pointer after freeing it can cause a skilled programmer/hacker to compromise the entire system. Hacking is the CRUX of computers, and the most skilled programmers and computer scientists result from hacking. You can start off with a book called "The Shellcoder's Handbook" if you're interested in touching on the topic. That book is very technical and will really get you thinking about how things inside the computer work... Ah, and just for some light reading... Here's a post by Linus Torvalds... the creator of the Linux operating system. I think this is hilariously interesting! + Show Spoiler +http://thread.gmane.org/gmane.comp.version-control.git/57643/focus=57918
On January 29 2012 22:22 ObliviousNA wrote: Damn, that linux link was interesting. Your response was articulated much better than I could have hoped to do, that was an excellent read.
@Crazyeyes, I was in the exact same boat last year. I was a third year who had only ever done TI-83+ programming, and sort of came to the major by accident. Then I got a job at a career fair, and my confidence soared. Frankly I didn't know jack**** about any of the languages I needed to, but what I did know was the concepts. Learning languages, APIs, etc is surprisingly easy once you've got a decent grasp on your first few.
I did have the advantage of learning C first though, which I didn't really appreciate at the time. (Looking back, I'm very glad I had the low-level overview because I would have been severely lost in several major projects since then if it weren't for the foundation in C).
Anyway, my advice is to get ANY kind of employment, paid, with the school, with a group of friends, or otherwise, and learn from there. I look back and find myself SHOCKED at how utterly unqualified I was for this position 6 months ago. You end up learning a ton through trial and error, but the concepts at college give you a really good foundation. You're learning how to learn, and after that it's up to you to apply it.
One more thing - I used to be intimidated by phrases like 'running scripts', etc. (Lot's of nerdy friends). It's not nearly as impressive as it sounds. Useful, but not difficult.
Some Advice Just today (10 December 2010), I got a PM from a person, asking a few things. + Show Spoiler [original message] +Hey,
I hope you don't mind the email. I saw that you started "The Big Programming Thread" and I'm interested in learning programming.
I'm currently a Masters student in Biomedical Engineering, but I recently became really interested in getting into programming due to a project I've been doing that involves (very basic) C++ for a microcontroller. I'm hoping to apply to some software engineer/development jobs when I graduate.
However, a lot of these jobs call for a lot of skills that I don't have such as C, C#, Java, Python, Ruby, MySQL, etc. As a computer science major, did you actually learn all of these and have a full understanding before you had to apply, or did you just have a basic understanding? I'm not sure if these companies expect that I know these languages in depth or if I just need a good foundation.
Also, is there a language that you would recommend as a "first step" that would make it easier to learn the others? I only have a few months left (< 2) that I have before I need to start applying to jobs, so hopefully I can learn one really well for a good foundation and just brush up on the others really quickly to understand the basics. I know that this won't be enough time to have a deep understanding of each, but if companies don't expect that right away, then maybe I can at least get the job first then learn them more.
Thanks.
My original reply was going to be rather short, but I realized about 15 minutes in that I was still typing and had more to say. + Show Spoiler [response] +Beware, this is a lot longer than I thought it would be :O
Anyway, no, I didn't. Ruby, MySQL, and PHP (among others) are web languages, and you'd learn in Web Design courses. Java, C++, and C# are all quite similar in syntax (they are all derivatives of C), although they are quite radically different from each other.
In my CS courses, I spent quite a bit of time on C++ (nearly 6 months, and Drexel runs 4 10-week quarters per year). After that, I had a single course that covered Linux and common scripting languages (Python, Perl, BaSH, awk, and some others). The more advanced CS courses focus on assembly and associated languages (VHDL mostly), or are theory oriented, where the concepts and math are taught, and problems are typically done with pure math (either state diagrams, or things like K-maps in Boolean Algebra).
I actually learned most of the languages I know before I ever got to university. I had a year of C++ and a year of Java in high school, which definitely helped, but I started with QBASIC when I was 11. Basically, I went like this: QBASIC -> HTML (not a programming language) -> C/++ -> Java -> Visual BASIC -> PHP, MySQL -> C# -> C++ (HS) -> Java (HS) -> VB.Net -> C++ (Uni) -> Perl, Python, BaSH, Awk, other stuff -> MIPS (a form of assembly) -> VHDL
Anyway, programming is a lot like art. You make something, and show it off. That's part of why a lot of developers will have whatever side project they run in Open Source. What language(s) you learn will also be affected by your goals. There's basically two ways to approach programming.
The first way, which is how most people learn who independently go about programming, is to pick a language, learn it, and then do whatever they want with that language.
The other way, which is what is taught in universities (not so much high schools), is to learn all of the math and concepts you need, and the basics of multiple languages. That way, you can pick the best language for the task at hand.
Now, there's also the third way, which is actually just both of the above done at the same time. Say, for example, that you know C++ very well, but you're tasked with something that would be better done in PHP and MySQL. Well, that's where you start combining things. Basically, you write the program in C++, and then port it over to PHP+MySQL. When first starting this, you'll probably end up actually writing in C++ before porting, but after a while you'll get into being able to just visualize the C++, and then porting in your brain, and then finally into just knowing PHP+MySQL. And this works with just about any languages.
Regardless, if you interview at a company that knows how to interview for a programming position, you'll most likely run into a practical set of interviews. Most of this will be logical problems that will test your math foundations. You don't have to know the answers or even find them, as long as while you work out the problems you logically explain each step. I'd say the most important classes you could take to help you with this would be Data Structures and Algorithms, another class which was the precursor to that (sorry I don't know what it's called, as Drexel's name for it was simply "Mathematical Foundations of Computer Science"), Boolean Algebra, and probably a calculus or statistics course (which you've probably already taken).
Learning a specific language is up to you. If you like working with microcontrollers then learning C, C++, and the fundamentals of ix86 assembly and MIPS are your best bet. If you'd rather work with desktop applications, C# is probably best, followed by VB.Net. Finally, there's internet applications. Here's a bit tricky. You'll need to know HTML, JavaScript, CSS, and SQL for just about any job in the industry, and then you'll need to know either PHP or ASP.
Guides Because we can all use some help every now and then...
+ Show Spoiler [HTML, CSS, and JavaScript] +
+ Show Spoiler [PHP] +http://www.php.net/ - Not the best place for tutorials, but the reference content is presented in a much clearer format that most other manuals
+ Show Spoiler [MySQL] +
+ Show Spoiler [C++] +
+ Show Spoiler [Python] +
+ Show Spoiler [Java] +
+ Show Spoiler [NIX] +
+ Show Spoiler [OpenGL] +
+ Show Spoiler [General] +
+ Show Spoiler [Algorithms] +http://projecteuler.net/index.php?section=about - Credit to DeathByMonkeys for link Data Structures and Algorithms - Probably the best book out there on the subject. It has all kinds of info from ordinals (usually called Big-O notation) to the kinds of data structures that are best for each kind of data storage to the best algorithms for retrieving data from those structures. http://www.spoj.pl/ - Submit algos and get them solved, or submit solutions to algos already posted. Pretty neat site. It's mostly English, so don't worry about that pl TLD. Credit to uNiGNoRe for the link.
People willing to help with stuff mmp tofucake FaCE_1 Epsilon8 CrimsonWall lozarian
Disclaimer
On July 09 2010 03:24 mmp wrote: [E]ven if you understand the material presented in these sites, it does not qualify what you can learn in a 4-year college program or an internship with regards to design & architecture. Anyone can write bad code, but it takes experience and some peer oversight to develop serious programs. That said, learning the basics is so easy that any motivated TL member can be writing cool & useful programs.
Above quote slightly altered (typo+editing). Doing something fun and cool with any language usually doesn't require too much work. Doing something fun and cool and productive and useful and WELL can be extremely hard (and usually is). You will have problems with your code, it's just a part of being a programmer. Don't get frustrated over it.
+ Show Spoiler [Definitions] + RISC - Reduced Instruction Set Computing. RISC is a type of assembly standard which reduces chip complexity by reducing the number of commands (the one RISC computer I built had about 18 commands). The opposite is the CISC architecture which can have hundreds or thousands of commands.
CISC - Complex Instruction Set Computing. It's tricky.
VHDL - VHSIC Hardware Descriptor Language. This is used for writing (in a text editor) the description of a chip and simulating it. You can also program a FPGA to use the designed chip, which basically allows you to build a computer in the most literal sense possible without a factory.
VHSIC - Very High Speed Integrated Circuits.
FPGA - Field Programmable Gate Array. A FPGA is basically a big blank chip that you can write to. How it works takes a while to explain, but let's just say that if you have the VHDL structure of the i7 and a huge FPGA, you could have an i7.
Obfuscation - The process of making code harder to read and/or reverse. This can be done from the source level all the way down to many tricks in the assembly.
Last edit: 2013-02-25 22:21:38 |
| | kwark > i will mentor you if you wish, but i'm like the absent drunk father you never wanted | |
|

|
| Sunhay Canada. July 07 2010 22:03. Posts 303 | Profile Blog # |
| Not sure what will be discussed in this thread but it wont hurt to give it a try. I think I'll spend the night experimenting with Clojure, looks promising. |
| |
|
| Adeny Norway. July 07 2010 22:06. Posts 1230 | Profile Blog # |
I propose we discuss project euler and similar problems, help each other solve or optimize them and so on. Ofcourse using spoiler tags. Discuss resources for leaning, and coding standards/good practice. There's plenty to talk about.  |
|
|
| aseq Netherlands. July 07 2010 22:06. Posts 2909 | Profile # |
| There are too many languages to have in 1 thread. You need at least a couple of threads for the type of code (web, database, mathematical, 3d, etc). I could post some of my code here, but what's the point? Show funny code, get help, show examples? |
|
|
| Adeny Norway. July 07 2010 22:08. Posts 1230 | Profile Blog # |
On July 07 2010 22:06 aseq wrote: There are too many languages to have in 1 thread. You need at least a couple of threads for the type of code (web, database, mathematical, 3d, etc). I could post some of my code here, but what's the point? Show funny code, get help, show examples?
They say versatility as far as languages go is a very good trait for programmers, I don't see how some exposure to other languages could hurt, as long as it's well commented and so on. |
|
|
2Pacalypse- Croatia. July 07 2010 22:09. Posts 4088 | Profile # |
I think this is too broad of a topic if we include all languages. There should be a one post per programming language imo. Personally, I would be interested/participating in C/ASM threads.
But good idea nonetheless and I think it's about damn time teamliquid got it's dedicated programming thread/s -.- |
| | "We're a community of geniuses because we've found how to extract 95% of the feeling of doing something amazing without actually doing anything." - Chill | |
|
|
tofucake United States. July 07 2010 22:10. Posts 11421 | Profile Blog # |
I know a bunch of languages, and there are plenty of things that are true for all languages (such as "ninjapants" being a bad function name if the function has nothing to to with ninjas or pants). I spose I could say "web languages only"...but that still catches all of .Net. If I said "only PHP" the thread would fill with hate (because very few actually know enough PHP to be good with it).
Anyway, well written code should be easily understood by any decent programmer, regardless of the language.Last edit: 2010-07-07 22:11:30 |
| | kwark > i will mentor you if you wish, but i'm like the absent drunk father you never wanted | |
|
|
| Adeny Norway. July 07 2010 22:16. Posts 1230 | Profile Blog # |
Cool function to find the amount of paths through a grid, from one corner to the other, without backtracking. Also solution to Project Euler 15, but I couldn't be bothered with bignums, so I ported it to python for the problem, but it illustrates the concept.
+ Show Spoiler + #include <iostream> #include <conio.h>
int excl(int in); int staircase(int m, int n);
int main() { std::cout << staircase(2, 2);
_getch(); return 0; }
int staircase(int m, int n)// (m+n)! / m! n! = number of paths { return ( excl(m+n)/(excl(m)*excl(n))); }
int excl(int in)//this is n! from math { int sum = 1; for (int i = 1; i <= in; i++) { sum*=i; } return sum; }
Comments appreciated.
![[image loading]](http://imgs.xkcd.com/comics/real_programmers.png) Last edit: 2010-07-07 22:35:42 |
|
|
CTStalker Canada. July 07 2010 22:32. Posts 9662 | Profile Blog # |
| it is too broad a topic. personally i find these "mega" threads to be useless. they become too large and often end up focused anyway on a random sub topic. i think our current treatment of programming discussion is fine. for example i've no interest in discussing or reading .NET, but a scheme/lisp blog i would find enjoyable. |
| | By the way, my name is Funk. I am not of your world |
|
|
| Adeny Norway. July 07 2010 22:37. Posts 1230 | Profile Blog # |
| Am I the only one who would like a go-to thread to ask questions rather than having to make a new thread? |
|
|
| Integra Sweden. July 07 2010 22:38. Posts 4924 | Profile Blog # |
| "the programming thread?" what exactly do you mean by that, script language like HTML or machine code programming like assemble? This is going to be one broad discussions topic. |
| |
|
| haduken Australia. July 07 2010 22:39. Posts 6895 | Profile Blog # |
I'm very interested in how .NET people implement a good credential management system in a SQL server and clients setup. e.g. a login system with user name and passwords.
If someone would offer some tips on that, I would be very interested. |
| |
|
McDonalds Liechtenstein. July 07 2010 22:43. Posts 2244 | Profile # |
| You could have called it a scripting thread instead if you wanted to talk about things like PHP. |
| |
|
| AcrossFiveJulys United States. July 07 2010 22:50. Posts 3593 | Profile Blog # |
This thread is a good idea. People can come in and ask questions/get help, and we can discuss anything related to programming.
Btw, if you guys like funny stories about working a coding job in industry, you should check out thedailywtf. |
|
|
tofucake United States. July 07 2010 23:03. Posts 11421 | Profile Blog # |
On July 07 2010 22:50 AcrossFiveJulys wrote: Btw, if you guys like funny stories about working a coding job in industry, you should check out thedailywtf.
Like I said in my blog...I'm having trouble deciding what code to submit to CodeSOD. Anyway, having one place a person can come to ask a question is good. It cuts down on the number of threads that may be spawned. I'll be happy to start a Big Thread of Web Programming if you want, and I could also do Big Thread of Notweb Programming. But then there's also the Big Thread of Web and Notweb Combined Programming. |
| | kwark > i will mentor you if you wish, but i'm like the absent drunk father you never wanted | |
|
|
| ShinyGerbil Canada. July 07 2010 23:05. Posts 510 | Profile Blog # |
I think this thread has potential. I'd definitely be interested in reading/participating at least. Also, I'd love to discuss some of the Project Euler (www.projecteuler.net) problems with some of you, as I've solved 120 of them to date (I'm ShinyGerbil on the site) but am having trouble with some of the more recent ones. |
| | [s]savior[/s] jaedong fighting! // member of LighT eSports |
|
|
| imweakless July 07 2010 23:10. Posts 649 | Profile Blog # |
+ Show Spoiler + On July 07 2010 21:59 tofucake wrote:It came up in one of my blogs...there's no programming thread and yet quite a few programmers. So here it is. Right now it's pretty open-ended (hurray new beginnings!). I'm sure I'll have stuff to update in this post eventually, but for now it's pretty much nothing. As such, I'll start off with my blog post which started this thread: Show nested quote +On July 04 2010 00:33 tofucake wrote:So I recently started my new job as a web developer at a company that does auto financing. One of the internal tools they use is a system designed by a guy named Bob. Bob is not good at PHP. Below is an unedited snippet of his code, which is present in almost every single one of about 3000 files (the $message assignment is different on every page, but basically the same). Retarded spacing aside, it's just dumb. Also, the passwords are stored in plaintext. ....and this is just the start. The rest of the code is worse. $systempath = $_SESSION[ 'systempath' ]; $systemname = $_SESSION[ 'systemname' ]; $systemid = $_SESSION[ 'systemid' ]; $userid = $_SESSION[ 'userid' ]; $userpassword = $_SESSION[ 'userpassword' ]; $username = $_SESSION[ 'username' ]; $systemaccesslevel = $_SESSION[ 'systemaccesslevel' ]; $loginstatus = $_SESSION[ 'loginstatus' ]; $message = $_SESSION[ 'message' ];
$message = 'Perform Loan History Processing';
// set the session variables
$_SESSION[ 'systempath' ] = $systempath; $_SESSION[ 'systemname' ] = $systemname; $_SESSION[ 'systemid' ] = $systemid; $_SESSION[ 'userid' ] = $userid; $_SESSION[ 'userpassword' ] = $userpassword; $_SESSION[ 'username' ] = $username; $_SESSION[ 'systemaccesslevel' ] = $systemaccesslevel; $_SESSION[ 'loginstatus' ] = $loginstatus;
i can see your good intention, but the way you start the "BIG" thread is kinda irrelevant. anyway GL |
| | KMK,Qri,GsD#1, UEE,stork jangbi for life! |
|

|
| ToT)OjKa( United Kingdom. July 07 2010 23:17. Posts 2032 | Profile Blog # |
| Maybe op could gradually update with links of tutorials and good sites for all kinds of programming languages |
| |
|
| AcrossFiveJulys United States. July 07 2010 23:18. Posts 3593 | Profile Blog # |
| Oh sweet I didn't know about project euler. I think I'll devote some time to solving those problems to tune up my coding skills. |
|
|
tofucake United States. July 07 2010 23:19. Posts 11421 | Profile Blog # |
On July 07 2010 23:10 imweakless wrote:+ Show Spoiler + On July 07 2010 21:59 tofucake wrote:It came up in one of my blogs...there's no programming thread and yet quite a few programmers. So here it is. Right now it's pretty open-ended (hurray new beginnings!). I'm sure I'll have stuff to update in this post eventually, but for now it's pretty much nothing. As such, I'll start off with my blog post which started this thread: Show nested quote +On July 04 2010 00:33 tofucake wrote:So I recently started my new job as a web developer at a company that does auto financing. One of the internal tools they use is a system designed by a guy named Bob. Bob is not good at PHP. Below is an unedited snippet of his code, which is present in almost every single one of about 3000 files (the $message assignment is different on every page, but basically the same). Retarded spacing aside, it's just dumb. Also, the passwords are stored in plaintext. ....and this is just the start. The rest of the code is worse. $systempath = $_SESSION[ 'systempath' ]; $systemname = $_SESSION[ 'systemname' ]; $systemid = $_SESSION[ 'systemid' ]; $userid = $_SESSION[ 'userid' ]; $userpassword = $_SESSION[ 'userpassword' ]; $username = $_SESSION[ 'username' ]; $systemaccesslevel = $_SESSION[ 'systemaccesslevel' ]; $loginstatus = $_SESSION[ 'loginstatus' ]; $message = $_SESSION[ 'message' ];
$message = 'Perform Loan History Processing';
// set the session variables
$_SESSION[ 'systempath' ] = $systempath; $_SESSION[ 'systemname' ] = $systemname; $_SESSION[ 'systemid' ] = $systemid; $_SESSION[ 'userid' ] = $userid; $_SESSION[ 'userpassword' ] = $userpassword; $_SESSION[ 'username' ] = $username; $_SESSION[ 'systemaccesslevel' ] = $systemaccesslevel; $_SESSION[ 'loginstatus' ] = $loginstatus;
i can see your good intention, but the way you start the "BIG" thread is kinda irrelevant. anyway GL
Pointless criticism.
On July 07 2010 23:17 ToT)OjKa( wrote: Maybe op could gradually update with links of tutorials and good sites for all kinds of programming languages Constructive criticism.
Not to sound like a jerk (too late), but let's try for #2 there, thanks ^^
|
| | kwark > i will mentor you if you wish, but i'm like the absent drunk father you never wanted | |
|

|
| 1 2 3 4 5 6 7 8 9 10 11 100 200 294 295 296 297 298 299 300 301 302 303 304 Next | | |
|
|
| |
|
Sidebar Settings...

|