The Big Programming Thread - Page 168
Forum Index > General Forum |
Thread Rules 1. This is not a "do my homework for me" thread. If you have specific questions, ask, but don't post an assignment or homework problem and expect an exact solution. 2. No recruiting for your cockamamie projects (you won't replace facebook with 3 dudes you found on the internet and $20) 3. If you can't articulate why a language is bad, don't start slinging shit about it. Just remember that nothing is worse than making CSS IE6 compatible. 4. Use [code] tags to format code blocks. | ||
Deleted User 61629
1664 Posts
| ||
darmousseh
United States3437 Posts
Looks like ruby on rails for scala/java. Anything event driven? I really think event driven is going to be catching on (which is why I think node will lead the way) | ||
lannisport
878 Posts
I would eventually like to have some sight of the forest (i.e. data structures/algorithms, software architecture etc.) I'm pretty much following Abductedonut's advice. + Show Spoiler + - 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 Any details on a suggested syllabus though or books that cover these topics (I found a few really good C books)? Or even a problem/case book of some sort? And will understanding these help me understand how to build web apps? | ||
![]()
tofucake
Hyrule18982 Posts
| ||
soiii
Germany266 Posts
On September 24 2012 22:29 tofucake wrote: I recommend not starting PHP until a while into learning C. PHP is very lenient and will teach you very, very bad habits if you're just starting to learn programming. Couldn't agree more. I recommend Python for starters just as xkcd does (or not). | ||
Tobberoth
Sweden6375 Posts
On September 24 2012 17:07 darmousseh wrote: Looks like ruby on rails for scala/java. Anything event driven? I really think event driven is going to be catching on (which is why I think node will lead the way) nodejs is pretty interesting, but personally I think it's a pretty scary development. Javascript is, if you think about it, a pretty terrible language and wouldn't have been as big as it is today if it weren't for the fact that all browsers support it so all web developers have used it at least a bit at some point. The world would be a much better place if somehow javascript was wiped from the planet and a better scripting language took its place. For people who don't know why javascript sucks (and pretty much every single other language), go here: http://wiki.theory.org/YourLanguageSucks | ||
lannisport
878 Posts
Also, is it non-advisable to skip PHP and go straight for Ruby on Rails or some other web framework after I've learned C? | ||
Deleted User 101379
4849 Posts
On September 24 2012 22:47 Tobberoth wrote: nodejs is pretty interesting, but personally I think it's a pretty scary development. Javascript is, if you think about it, a pretty terrible language and wouldn't have been as big as it is today if it weren't for the fact that all browsers support it so all web developers have used it at least a bit at some point. The world would be a much better place if somehow javascript was wiped from the planet and a better scripting language took its place. For people who don't know why javascript sucks (and pretty much every single other language), go here: http://wiki.theory.org/YourLanguageSucks Actually Javascript is an interesting language despite being on all browsers. I was a Javascript hater for a very long time until it finally clicked and i understood that it's closer to lisp/scheme and the like instead of C/C++ or PHP and started to program the right way with it. It's a unique language that sadly got a very bad reputation from how it's used in browsers - which is admittedly really, really annoying. | ||
lannisport
878 Posts
On September 24 2012 22:35 soiii wrote: Couldn't agree more. I recommend Python for starters just as xkcd does (or not). Why did you have to suggest that? I spent the entire day mulling over which language to start with. My goals? I want to solve problems like a software engineer would, and write programs the way they would, and also to be able to learn ANY language after more easily. I also want to build web apps in the end (And sooner rather than later). I was leaning towards C because of books like "C: A Software Engineering Approach", but then I checked out MIT's Open Course hoping that their introductory course would center around C, alas it does not. However, I watched the professor's intro lecture and it was mindblowingly good (The professor said you can get a grasp of any language in 2-4 weeks if you do the course). A lot better than the other lectures that I had watched, and I think it would come closer to my goals. In the end it doesn't really matter if it's C vs Python, I think the community and teachers teaching it matters more. And a plus with Python is I can code applications that are a little more practical to what I want to learn, sooner. I can learn C and assembly after a little while. Maybe I might jump into Ruby on Rails or a python web framework sooner though... Hopefully, I can hit my goals with this. What are your guys thoughts? (Damn that convincing post on learning C first). Reading materials: http://www.greenteapress.com/thinkpython/html/index.html http://learnpythonthehardway.org/book/ http://www.diveintopython.net/toc/index.html Python Programming: An Introduction to Computer Science 2nd Edition | ||
Herper
501 Posts
| ||
jergason
United States37 Posts
| ||
tzenes
Canada64 Posts
When I got to Northwestern the first course they taught us was Scheme (a lisp dialect for the uninitiated). I had taught myself C back in highschool (largely out of K&R) and I thought I was pretty hot shit. Scheme taught me otherwise. I actually spent the next 4 years of my life actively avoiding functional languages as a result of Scheme. It was by far the worst decision of my programming career. When I finally came back to functional languages (starting with Javascript of all places), it was like putting on glasses for the first time. I'll use a lambda or => or do |foo| as quick as any other instrument, but I still shy away from languages like Haskell. Taking Scheme "because it was hard," is a mistake I never really recovered from. I guess what I'm trying to get across is that maybe I disagree with Joel. Maybe having a bad first experience can really be harmful. Then again, I have yet to meet a Java programmer worth his spring^H^H^H^H^Halt. Every language I've learned has taught me something: C: How a computer actually works Java: How to re-factor code Perl: How to get something done in the next 5 minutes Scheme: Why state is so bad C#: Why Java is such a terrible language Python: OCD, and why whitespace sensitivity is a good thing Ruby: That programming can be easy and powerful Javascript: Callbacks, oh so many callbacks F#: Pipes! this also goes for any shellscripting language XML: that XML is not a programming language, no matter how much Java you write Haskell: Monads and Maybes (or why null is horrendous) Others got left off, but the point is every time I've taken up a new language and really dedicated myself to it, I've learned something new and become a better programmer. | ||
Abductedonut
United States324 Posts
On September 25 2012 15:19 lannisport wrote: Why did you have to suggest that? I spent the entire day mulling over which language to start with. My goals? I want to solve problems like a software engineer would, and write programs the way they would, and also to be able to learn ANY language after more easily. I also want to build web apps in the end (And sooner rather than later). I was leaning towards C because of books like "C: A Software Engineering Approach", but then I checked out MIT's Open Course hoping that their introductory course would center around C, alas it does not. However, I watched the professor's intro lecture and it was mindblowingly good (The professor said you can get a grasp of any language in 2-4 weeks if you do the course). A lot better than the other lectures that I had watched, and I think it would come closer to my goals. In the end it doesn't really matter if it's C vs Python, I think the community and teachers teaching it matters more. And a plus with Python is I can code applications that are a little more practical to what I want to learn, sooner. I can learn C and assembly after a little while. Maybe I might jump into Ruby on Rails or a python web framework sooner though... Hopefully, I can hit my goals with this. What are your guys thoughts? (Damn that convincing post on learning C first). Reading materials: http://www.greenteapress.com/thinkpython/html/index.html http://learnpythonthehardway.org/book/ http://www.diveintopython.net/toc/index.html Python Programming: An Introduction to Computer Science 2nd Edition lannisport, my post was originally written with the intent to answer one users question. He said he learned java first and he doesn't "know" or really understand how to program and write scripts. C is arguably the most powerful language to learn because it branches out so well into other languages. Can you write web applications using C? Probably not. Not in any easy, feasible way. Can you write a browser that parses html/CSS using C? Absolutely. Learning how to solve problems as a software engineer is a multi-step process. And each problem generally has a unique solution. You wouldn't write an operating system using Java (RIM did and look at where they're at) just like you wouldn't write a web applet using C. The truth is, there is no one "best" language to start out with. Everybody learns in a different way. I learned programming concepts from C because I learn best from "difficult" concepts like pointers and memory management. I like knowing how things really work on the inside. You might not. You might learn programming concepts by using a high level language like python or java or C#. Only YOU know how you learn best. Regardless, just pick a language and practice. Eventually, you WILL get it. That being said, if you're not actually a computer scientist/software engineer/hacker, you're fine not learning C/Assembly. They're not the best for people who aren't really into computers. | ||
Tobberoth
Sweden6375 Posts
For example, you could start making some basic websites in HTML or something, just to see your computer "do stuff". Then you can use a bit of javascript to dick around with very basic coding, just to see how programming works in a basic way. When you feel you understand how to calculate a value and show it in a message box and writing a function, you could then go read the first chapters in a book on C to see how coding more low level is. If you then feel you still don't really understand how it all comes together, go read the fírst chapters in a book on assembly (I never REALLY coded assembly myself, just read parts of good books on it and man, you learn SO much of how a computer actually works). At this point, you should probably have a decent grasp of the difference in abstraction of languages and a basic notion of what the pros and cons are, and THEN you can go for a language. Maybe you feel C is too low level but you still need something powerful, great time to go for C# or Java. Maybe you feel javascript was a pretty nice level of abstraction but want to use it for a wider array of things, sounds like a plan to look into python or ruby. Of course, this doesn't cover stuff like functional languages etc, but I think most people will code somewhat procedurally at first regardless, and other than that, I still think it's the best to learn object-orientation before going into the other concepts. | ||
Deleted User 101379
4849 Posts
On September 25 2012 15:19 lannisport wrote: Why did you have to suggest that? I spent the entire day mulling over which language to start with. My goals? I want to solve problems like a software engineer would, and write programs the way they would, and also to be able to learn ANY language after more easily. I also want to build web apps in the end (And sooner rather than later). I was leaning towards C because of books like "C: A Software Engineering Approach", but then I checked out MIT's Open Course hoping that their introductory course would center around C, alas it does not. However, I watched the professor's intro lecture and it was mindblowingly good (The professor said you can get a grasp of any language in 2-4 weeks if you do the course). A lot better than the other lectures that I had watched, and I think it would come closer to my goals. In the end it doesn't really matter if it's C vs Python, I think the community and teachers teaching it matters more. And a plus with Python is I can code applications that are a little more practical to what I want to learn, sooner. I can learn C and assembly after a little while. Maybe I might jump into Ruby on Rails or a python web framework sooner though... Hopefully, I can hit my goals with this. What are your guys thoughts? (Damn that convincing post on learning C first). Reading materials: http://www.greenteapress.com/thinkpython/html/index.html http://learnpythonthehardway.org/book/ http://www.diveintopython.net/toc/index.html Python Programming: An Introduction to Computer Science 2nd Edition Programming languages are like religions, everyone thinks his is the only correct one. C is a great language... but you won't use it in the real world unless you program for microprocessors or on the linux kernel. C++ is the closest which is more often used and these days mostly used when developing 3D games/engines. You won't do either until far further into your programming career - if ever. Python, Ruby and PHP all have their own advantages and problems. While i don't like any of those, they all get the job done and that is what matters in the real world. PHP is probably still the most used of those and if you want to work in that field, it's sadly a "must-know". Also, Perl is the best scripting language ever. Javascript. Well, if you want to develop for the web, you have to know at least the basics. If you don't. Well, you probably still have to learn the basics at some point. Most programmers, even those working in web development since years, only learn the basics. Java will probably land you the most jobs after university and while i absolutely despise it, it gets the job done and sadly every developer has to learn it at some point - at least to develop apps for his newest android mobile. Also, if you call Javascript Java or the other way around, i will rip your head off and feed it to the starving Perl programmers. C# - i'm not a big fan of Microsoft but with that language they really managed to produce something good for once. In "Potential Jobs after University" it's right up there with PHP and Java. It took some ideas from functional programming (Lisp/Scheme) and integrated them nicely into a classical object oriented language. I really recommend it if you want to develop applications or small games. Trying to do things "the right way" is nice... but there is no "right" way. If you want to develop for yourself, sure, you can write everything in C, but noone does that outside of university. Programming means solving problems efficiently and programming in C is slow and tedious, not efficient. Sure, the end result is probably and more memory and CPU efficient than that of any other language - but you will have spent 10 times as much time on writing it and your boss will fire you for being slow right after you are done. Chose the right tool for the job and if you want to plan for the future, look at what potential employers use. Note that i don't mean "Don't learn C". It's good to know C and how everything works behind the scenes, i really recommend learning it at some point, but it won't really land you any jobs. | ||
jergason
United States37 Posts
On September 25 2012 17:05 Morfildur wrote: C is a great language... but you won't use it in the real world unless you program for microprocessors or on the linux kernel. C++ is the closest which is more often used and these days mostly used when developing 3D games/engines. You won't do either until far further into your programming career - if ever. . . . Note that i don't mean "Don't learn C". It's good to know C and how everything works behind the scenes, i really recommend learning it at some point, but it won't really land you any jobs. This is untrue. Good C programmers earn top dollar. If you are doing software development, pretty much any field can make you lots of money. Pick what is interesting to you and you'll succeed. Don't pick and choose based on how much money you can make off of it. | ||
lannisport
878 Posts
@tzenes -- Out of curiosity what kind of programs did you write in those 4 years exclusively using Scheme? @Abuductedonut -- I know now it's a question of not if I should learn C and assembly (Also curious about OS apis and stuff) but more of a question of when. C is definitely the next thing on the list after I'm done with python. Thing is, I do want to learn how computers work on the most basic level, and hacking seems fascinating to me. Would I need to know C to hack web applications? Or do I just need to know the framework they were built in? I'd really like to take a peak inside a web app like 37signals or Salesforce. @Tobberoth -- I actually know xhtml and some javascript already (I guess html5). Javascript I guess was my first taste of programming concepts. The DOM, variables, functions and methods. But I wasn't comfortable enough to mess around with jquery and make some scripts of my own. @Morfildur -- I'm actually out of college, and I have my own home based business (A web based business yet I don't know php, go figure). So I have no concern about employability (Is that a word?) in the slightest. I have some ideas for some web apps and I want to build them. I have some options, like I can hire a medium sized web development company to build the app for me, or I can hire contractors to build the app with me, maybe even go for a startup. But either way, I wan't to be able to follow along at the very least, and contribute at some level besides having the idea. I read this interesting paper that argued for python being used as a first language ( I think it's old but still interesting): http://mcsp.wartburg.edu/zelle/python/python-first.html Thanks guys for all the responses! Time to hit the books and make stuff now. | ||
cowsrule
United States80 Posts
You should think a bit more about the goals that you have for learning to program - wanting to solve problems like a software engineer is quite broad. It sounds like you're interested in the web which is great. Pick a language/technology that lets you pursue your interests, as working towards an exciting goal will help you develop the fastest. Choosing the right tool for the job is a large part of software engineering, find something you want to build and work backwards from there. | ||
Kambing
United States1176 Posts
Be aware that as people pointed out that learning Python is only the first step on your journey. Get ready to diverse the languages you know. And also be conscious that your goal is not learning how to use language X but how to solve problems in a way that be communicated to a computer for execution. | ||
Matoo-
Canada1397 Posts
Other than that yeah Python is awesome and starting with it sounds like a good idea. | ||
| ||