Friday, October 16, 2009

Wanna Enter the Real Programmer's World

Wanna Enter the Real Programmer's World (http://www.techenclave.com/programming/wanna-enter-the-real-programmers-world-146364.html)

ralbhat

13 Sep 09 01:19 PM

Wanna Enter the Real Programmer's World



Hey,

Over the past 3 years I've been trying to learn enough programming to really become what is called a core programmer. The sort of guy who can really do EVERYTHING he wants.

I've done some C++, i understand just the basics of pointers and i really don't know how to go ahead with it (btw i've covered pointers from the Robert Lafore book)

I'm also starting Python, nothing flashy there yet though.

Recently someone told me that if i really want to be able to break a system or understand what faults there are then C/C++ would help, but i really don't understand how. Is there some topic that i just haven't heard of? Someone mentioned something called a 'segment fault'. I have no idea about this and REALLY want to learn. Could someone point me to the right web-page / book? I know there are a hundred sites out there but the trouble is a lot of them are misleading. And i really don't wanna waste a lot of time just to ealise that i learnt more or less nothing.

Help really required!

blufox

14 Sep 09 10:05 AM

Re: Wanna Enter the Real Programmer's World



Okay let us start from the beginning

- Learn x86 architecture, and I do not mean 8086 or 8088 architecture.

- Get comfortable to see assembly codes, try to understand it if you cannot master it.

- Master C programming language.

- Develop some troubleshooting skills.

- Start using Linux for all these.

Books -

- Intel/AMD manuals.

- James L Turley.

- The C Programming language by K&R

- Harbinson and Steele.

- CLR.

- Man pages on your Linux system to help you.

Good luck

kalesh

15 Sep 09 09:29 PM

Re: Wanna Enter the Real Programmer's World



It takes time. It takes courage. It takes patience. Most important, it should be fun. You should enjoy it.

The best thing is to start with data structures. Stack, Link Lists, Trees etc. If you are already done with these, do a basic project. Pick something interesting. A project would give you a goal that you want to accomplish, else you would just be surfing the internet looking here and there.

And stick to one language for now. I would suggest c++ or c#.

Happy Coding!!

naveen58

15 Sep 09 09:48 PM

Re: Wanna Enter the Real Programmer's World



the basic funda for Programming that i think is the "LOGIC".

you should develop your own skills coz a same program can be done in many ways.so,it's all about using your logic to reduce the code of the program.

every language is a lil bit different from the other with different keywords.but,the logic you apply is most important.

IMO make your C/C++ base more stronger by practicing & later when you become a PRO go for Java.

blufox

15 Sep 09 11:26 PM

Re: Wanna Enter the Real Programmer's World



I ll still personally suggest -

stick to C and assembly for the moment if you really want to learn the murky innards of a system :).

reef_d

18 Sep 09 12:13 AM

Re: Wanna Enter the Real Programmer's World



Like everyone has said, stick to C and x86 Assembly language. Use Linux and the gcc compiler. Whatever you do, don't waste your time using TurboC

a_k_s_h_a_y

18 Sep 09 01:43 AM

Re: Wanna Enter the Real Programmer's World



What you need is Computer Architecture and Operating Systems Architecture/Internals/API.

Programming is crap, you learn a programming language in 3 days. Be it ASM, JAVA, C++, C.

And you learn Data Structures in a week and as for Algorithms, the day since you were born. Problem solving that is.

As for proficiency at a programming language it comes only with practice in that particular language and style. But its not really needed, for you as of now. later gain that. its necessary.

blufox

18 Sep 09 12:33 PM

Re: Wanna Enter the Real Programmer's World



Quote:

Originally Posted by a_k_s_h_a_y (Post 1255509)

What you need is Computer Architecture and Operating Systems Architecture/Internals/API.

Programming is crap, you learn a programming language in 3 days. Be it ASM, JAVA, C++, C.

And you learn Data Structures in a week and as for Algorithms, the day since you were born. Problem solving that is.

As for proficiency at a programming language it comes only with practice in that particular language and style. But its not really needed.

Wow genius you are who says programming is crap, perhaps you write crap programs and thus presume same for programming.

One who really learns *data structures* in one week cannot be a computer engineering student. He has to be a academic mathematician or a number theorist, which you are not so stop giving out false info here.

Oh BTW even after programming in C for llike 7 years now I still think I do not know C confidently. Let us see how 3 days C experts think on this.

Algorithms are not natural born Einstein. If you think we meant algorithms to make a cup of tea then have a bath and come again, we meant algorithms for real world problems not household activites. Algos to solve mathematical recurrences, searching problems, efficient cache utilization etc.

Please do not say something just for the heck of it.

hammerhead

18 Sep 09 01:22 PM

Re: Wanna Enter the Real Programmer's World



.code{font-family: Courier, Courier New, Verdana, Arial;

        color: #465584;

        background-color: #FAFCFE;

        border: 1px dotted #000;

        padding: 2px;

        width:98%;

        margin: 0px auto 0px auto;

        /*overflow: auto;

        height: 200px;*/}

Moderator's Warning:



Do not turn this thread into a flame war. Post only if you can contribute to the OP.

kjd_1122

18 Sep 09 01:32 PM

Re: Wanna Enter the Real Programmer's World



1) Get some good grip and develop some good skills in C and C++.

2) After getting some grip on those, start with data structures (Most imp).

After this, It's upto you that on which path you wanna go.

IF you wanna become computer engineer, system developer... follow steps 3 and 4. I dont have much knowledge about it though.

3) If you are computer engineering student you must know Discrete Maths. Study it if you can. try to convert some algos into programs.(Not necessary though but would be better)(don't have idea on books.)

4) Start getting some knowledge on X86 arch. (Refer MSDN for that. x86 Architecture). If you dont have knowledge on assembly/OS then refer some books on introduction, methodologies, characteristics of it

- And IF you wanna become software engineer start learning some serious object oriented programming language like JAVA. If you wanna learn java from scratch, refer Hear First java by kethy sierra. it's very good for beginners.

- You can also study C#and Visual Studio.

- Also Start understanding/mastering OOAD- Object oriented Analysis design.

- Once you finish this you must be able to write code for some good basic/mainstream software as well as be able to design them.

- Take some project to guide your way towards goal. It will help you the most.

- (optional) Pass some certification like SCJP if you want, will help you boost your confidence.

linuxtechie

18 Sep 09 01:57 PM

Re: Wanna Enter the Real Programmer's World



Quote:

Originally Posted by a_k_s_h_a_y (Post 1255509)

Programming is crap, you learn a programming language in 3 days. Be it ASM, JAVA, C++, C.

Thats a very bold statement. I hope you only meant semantics. Pattern designing is altogether a different ball game. Yeah if its Java, then probably makes sense with Eclipse, the spoon feeder.

~LT

greenhorn

18 Sep 09 02:02 PM

Re: Wanna Enter the Real Programmer's World



I think what akshay meant to say were that programming languages were a means to an end, as long as you know the stuff that comes before that, there is no need to glorify xyz language and all that.

If you just want to break stuff, you don't even really need to code. Testing is an art all by itself. And a lot more fun too ( breaking stuff is a lot easier than making them :P).

a_k_s_h_a_y

18 Sep 09 03:30 PM

Re: Wanna Enter the Real Programmer's World



Quote:

Originally Posted by greenhorn (Post 1255873)

I think what akshay meant to say were that programming languages were a means to an end, as long as you know the stuff that comes before that, there is no need to glorify xyz language and all that.

Exactly.

To learn the syntax of a programming language it takes only few days.

To gain proficiently it takes practice. Already told.

Don't focus too much on mastering the in and outs of a language, unless you want to be serious compiler designer.

1 week in holidays is good enough to finish data structures. ask any engineering student. all study just the day before the exam.

It took most of my classmates only 2-3 days to learn Java ! And as for algorithms you learn problem solving since childhood, how you go about in a new situation, in any activity you get the job done in a sequence of actions and finally end up either successful or fail. See you been doing algorithms since day 1.

Given an algorithm for a newly discovered hack, any body out there can code the solution. First get the algorithm.

EDIT..!

How did I forget!!

In one of recent placement screening test, we were had to adapt to a propitiatory language right on the spot and code the solution to a given problem in that language all in 2 hours. And no wonder many got the answer right. But the problem focused more on design/logic then exploring language features.

linuxtechie

18 Sep 09 05:06 PM

Re: Wanna Enter the Real Programmer's World



Quote:

Originally Posted by greenhorn (Post 1255873)

I think what akshay meant to say were that programming languages were a means to an end, as long as you know the stuff that comes before that, there is no need to glorify xyz language and all that.

If you just want to break stuff, you don't even really need to code. Testing is an art all by itself. And a lot more fun too ( breaking stuff is a lot easier than making them :P).

I dont agree to Programming language taken that lightly. Each programming language has it pros and cons and before you jump to just using any of it, you need to justify why that specific language, hence I am pretty sure you cant do that within days counted. Whenever I read Stroustoup I discover new technique that I hadn't explored previously (nope those techniques are not there in the book) and realize how much I haven't yet known in-spite of coding for so many years.

Similarly about python, I have been using it for last couple of years, but there are so many techniques to be discovered, hence can't say that I yes I know python completely, as a matter of fact I can't say same for C++.

@greenie, I am thinking that you are into quality assurance industry... am I correct?

~LT

John Anderton

18 Sep 09 05:28 PM

Re: Wanna Enter the Real Programmer's World



At the expense of being trolled at, read point 2 in this post

Its a couple of years old but I agree with it. You have to get your basics absolutely right.

For programmers as I see it (and I'm of course, no expert), there are 2 major ways. You either go small or you go big. I don't mean the work you do but the level at which you do it.

If you go down into the core, you want to know all the basics and I mean the absolute basics that others take for granted. Know your architectures and your system.

If you want to go up into application development and software design, learn higher level languages which add several levels of abstraction from the core to you. Sure, it makes things more "bloated and slower" (as some say) but it makes development easier and quicker. Honestly, why reinvent the wheel?

I'd suggest that you focus on the core stuff if you want to become a core programmer. You'd be looking at stuff at the level of operating systems and compilers. You should have a working knowledge of high level languages too (what if you need to make a program to automate tasks on your PC). But if I were you, I'd spend more time diving deeper into understanding OS' and compilers. Pickup something like Andrew Tannenbaum's book on OS' and the one on Computer Architecture and Organization if you haven't already. Learn Theoretical Computer Science (its a subject in Engineering) and learn about compilers.

That should be a good enough start :)

Oh yeah, if you're wondering about OS' (I can't believe I'm going to say this) but I'd play around with a couple of Linux distros. (Note: I don't mean to start an OS war)

I'm a Windows user myself and I have to say, contrary to popular belief you can learn about the way Windows works and even get a lot of source/documentation out there. I just feel its easier to do so with linux with there being a lot of help out there, easy availability of documentation/source code and more things to break.

I feel its easier to make/break linux because it gives you more things to play with. Go screw up your (test) OS and fix it.. play with things. Explore and enjoy. Until you start exploring, learning won't go too far.

blr_p

18 Sep 09 05:46 PM

Re: Wanna Enter the Real Programmer's World



Quote:

Originally Posted by ralbhat (Post 1250576)

Over the past 3 years I've been trying to learn enough programming to really become what is called a core programmer. The sort of guy who can really do EVERYTHING he wants.

I think thats a very ambitious goal to shoot for, not to mention vague.

Is it desirable to be able to 'do EVERYTHING he wants' or to be able to get others to do it for you :)

You might have come across this book

If you learn to think in that fashion the rest will take care of it itself.

Stay away from language wars they are pointless. Be totally platform & language agnostic.

Quote:

Originally Posted by linuxtechie (Post 1256041)

hence can't say that I yes I know python completely, as a matter of fact I can't say same for C++.

Shakespeare did not know every single word in english.

Paul McCartney could not read music when he started.

I'm not sure what the point of knowing something completely is, surely the goal is to be able to solve any problem given adequate resources. In the trenches you rarely get to write elegant code, time constraints will ensure that.

Quote:

Originally Posted by John Anderton (Post 1256059)

Oh yeah, if you're wondering about OS' (I can't believe I'm going to say this) but I'd play around with a couple of Linux distros. (Note: I don't mean to start an OS war)

I'm a Windows user myself and I have to say, contrary to popular belief you can learn about the way Windows works and even get a lot of source/documentation out there. I just feel its easier to do so with linux with there being a lot of help out there, easy availability of documentation/source code and more things to break.

I feel its easier to make/break linux because it gives you more things to play with. Go screw up your (test) OS and fix it.. play with things. Explore and enjoy. Until you start exploring, learning won't go too far.

I'll agree upto the point of learning the basics. But it will only tell you how windows works on the surface. To learn how windows works you have to play with windows and the same with any system. They each have their own quirks and you cant do the job properly otherwise.

hammerhead

18 Sep 09 05:54 PM

Re: Wanna Enter the Real Programmer's World



Guys being a good Algorithm designer and a good Programmer are totally different things. And it takes considerable of time to be either. To be a good Algorithm designer you dont even need a computer, Algorithms existed before there were any.

Akshay, to be a good programmer does not mean knowing the syntax alone. Play with threads, classes, pointers and you will find that you can solve a problem using multiple ways.

greenhorn

18 Sep 09 06:10 PM

Re: Wanna Enter the Real Programmer's World



there is a world beyond c/java/php or whatever language people think is 'cool'

personally i was taught BASIC and C++. Learnt ASM (for a whole bunch of microprocessors), and COBOL from my line of work.

Can't write a C program to save my life at the moment :ashamed: But did know it kinda well at one point - Enough to write code better than my instructor at the analysis of algorithms class :P

Learning C doesnt help you much if you are going to write code in Languages which are not the same way. I've had to pretty much un learn all the C I'd known.

To the OP - what background are you from? what exactly do you want to do? ( any specific goals?) Probably that can let us help you choose a path better.

@ LT - yup I work in QA now. Apart from the occasional foray into scripting, dont write any code now. Breaking crap code ( the stuff written by the average coder in the organization I work in) is more predictable, and more fun than writing crap code (given the timelines and circumstances :D)

Lord Nemesis

18 Sep 09 06:47 PM

Re: Wanna Enter the Real Programmer's World



Although stated in a crude manner, Akshay does have a point when he said programming is nothing. i.e if what he is referring to is the syntax of the language. All you need to do is to develop is logical thinking and learning the basic fundamentals of a system.

For example, without any prior knowledge of Perl and using only an on line reference manuals, I was able to create some scripts for automating some stuff on Mac OS and Windows involving reading/parsing and generation of XML files as well as a few utility tools and all that in just a couple of days and it saved the company about 4~6 months of testing effort for about a 100 guys. Another time I was able to write a small game in Java without having any any prior experience with the Language.

I cannot claim expertise in Perl or Java, but I can write working software in both of them not to mention Visual Basic and C# just as well as I could in C++ which I use on a daily basis. In fact I had very little programing experience with VC++ before I stated working.

I know a number of people who do programming on a daily basis with out even knowing what a Memory leak or memory corruption or a stack corruption means nor the difference between any of them. They don't know how a program is executed by the processor. They sure know the syntax of the programming language, but without such fundamentals we cannot write efficient and bug free software.

haraakiri

18 Sep 09 07:59 PM

Re: Wanna Enter the Real Programmer's World



Generally importance of a programming language is over estimated. But here in this thread, I think it's being underestimated. One of the very famous frameworks for creating web applications, which changed the way programmers think about programming web in general and configuration with xml in particular, rails was possible mainly because of ruby. It would have been difficult or impossible in any other language. There have been no of rails clones, nothing came close to it's simplicity, productivity.

Alex Stepanov worked hard on creating a proper implementation for his thoughts on generic programming but couldn't do that partly because of the complexity of implementing his thoughts in a proper programming language until he saw c++ with templates. That with a few changes to the language made it possible for him to realize his thoughts and STL was the result. Read his book "Elements Of Programming" for details.

Creating an operating system or a device driver and yet write parts of the code to be portable requires a good memory model which C offers. Try to express the same stuff in java or c# or python, you will understand why c has the features it has. If you can't read Alex Stepanov's interviews and a few more articles on c's simple memory model.

Algortihms aren't everything. If you need to create a program consisting of thousands or millions of lines of code, you need something more than that. Abstraction mechanisms. That's where a programming language helps. Provides us with abstractions to be able to get to a solution. As Bjarne Stroustrup puts it, "You think in Code". That's what Kernighan suggests in his book "Practice Of Programming".

Choice of programming language doesn't mean everything, but it also cannot mean nothing.

blr_p

18 Sep 09 08:06 PM

Re: Wanna Enter the Real Programmer's World



Quote:

Originally Posted by Lord Nemesis (Post 1256117)

All you need to do is to develop is logical thinking and learning the basic fundamentals of a system.

For example, without any prior knowledge of Perl and using only an on line reference manuals, I was able to create some scripts for automating some stuff on Mac OS and Windows involving reading/parsing and generation of XML files as well as a few utility tools and all that in just a couple of days and it saved the company about 4~6 months of testing effort for about a 100 guys. Another time I was able to write a small game in Java without having any any prior experience with the Language.

aka any problem on any platform in any language

Quote:

Originally Posted by Lord Nemesis (Post 1256117)

I cannot claim expertise in Perl or Java, but I can write working software in both of them not to mention Visual Basic and C# just as well as I could in C++ which I use on a daily basis. In fact I had very little programing experience with VC++ before I stated working.

This to me is the 'Real Programmer's World'

Real problems in need of solutions.

a_k_s_h_a_y

18 Sep 09 08:25 PM

Re: Wanna Enter the Real Programmer's World



Quote:

Originally Posted by hammerhead (Post 1256082)

Akshay, to be a good programmer does not mean knowing the syntax alone. Play with threads, classes, pointers and you will find that you can solve a problem using multiple ways.

I understand that, that's why i said too. With a practice in particular language you learn more about your tools. you learn to use to sword better ;) only with experience !

but for newbs i never advice to spend all time on just mastering a programming language. you can gain expertise later as you develop.

Lord Nemesis got my point.

For example, am not a master in shell scripting, but i was able to develop them on the fly whenever necessary for my servers, just by reading some man pages and syntax.

We are not Windows API experts, or Linux API an OS Gurus. But still our programs written for Windows and Linux are used by thousands of people !!

I just had to know few basics of win api and windows programming in general to get my ideas into a working program/solution.

Lord Nemesis

18 Sep 09 10:06 PM

Re: Wanna Enter the Real Programmer's World



@haraakiri: What you posted sums up my point. Its the logical thinking that matters.

For example you say STL would not have been had it not for C++. STL is a tool, but what is C++ and how did it come by. That's also another tool that came by because of someone else's thoughts that were put in action. It may have been difficult for a library like STL to come by with out C++ and templates, but had it been impossible? I think not.

Its a hurdle alright, but I guess he would simply envision something like C++ and create it if that's whats stopping him. A programming language is a tool that is the means to a problem, not the end.

If you learn to think logically, you will find the solutions to the problems and use whatever tools are required and make them if they do not already exist. If you think in terms of a programming language, you will be limited by its boundaries.

ralbhat

28 Sep 09 12:02 AM

Re: Wanna Enter the Real Programmer's World



wow..

thats a lot of material for me to ponder through. will definitely be working on all I can pick out from here.

Thanks a lot, guys!

nukeu666

28 Sep 09 11:15 AM

Re: Wanna Enter the Real Programmer's World



forget leaning about pointers and assembly etc

programmers are basically problem solvers

you should get a hold of algorithms by cormen and start solving puzzles on topcoder.com

the language is up to you...c++ or java or something else

linuxtechie

28 Sep 09 11:54 AM

Re: Wanna Enter the Real Programmer's World



Quote:

Originally Posted by greenhorn (Post 1256098)

@ LT - yup I work in QA now. Apart from the occasional foray into scripting, dont write any code now. Breaking crap code ( the stuff written by the average coder in the organization I work in) is more predictable, and more fun than writing crap code (given the timelines and circumstances :D)

I can understand... have seen things been broken down mercilessly (not mine... phew) by a qa colleague of mine. Irrespective being a dev, I am keen in learning QA environments, how it goes about giving the sharp edge to the software.

As you had mentioned previously, like you said in QA, I also writing software an art.

~LT

malhotraraul

28 Sep 09 12:14 PM

Re: Wanna Enter the Real Programmer's World



Quote:

Originally Posted by kalesh (Post 1253167)

It takes time. It takes courage. It takes patience. Most important, it should be fun. You should enjoy it

i agree !!!

xerocool

28 Sep 09 01:28 PM

Re: Wanna Enter the Real Programmer's World



guys can any1 suggest a good book for c ? (for newbies)

Scorpy

28 Sep 09 01:33 PM

Re: Wanna Enter the Real Programmer's World



Well sorry for interrupting the thread . But even I need help in getting everything sorted out . So this is what I sent as pm to blufox but he hasn't replied yet . Anyways since there are many more people here who can answer my questions here it goes .

Hello , well I need help/advice/guidance with coding . Well I really am interested in coding . Right now I'm learning C++ in my First Year Engineering . But since I have already done basics of Java in 10th I would like to do it at a faster pace . So basically what I want to know is that which all softwares I need to know to get into a big company . And I don't only mean be a lame programmer for my life . I want to get big , I'll most probably be doing MBA in something . I asked one of my friends who is a Web Designer what all softwares he knows/uses for his work . Well this is the list he gave me

C#

C++

Java

Python

Ruby

xHTML

CSS

JAvascript

PHP

Now , I want to know which is more important to learn

C or C++ or C# ? If they are all different then whats the difference ? Also could you suggest some books and software I need to have to get started ? Currently I'm using Turbo C for my programs . College is teaching us lame shit like printing patterns and all . Pretty boring . I know they will teach us in the 4 years . But I want to learn other softwares that are used . If you could help please do .

__________________

a_k_s_h_a_y

28 Sep 09 01:38 PM

Re: Wanna Enter the Real Programmer's World



^^^^^^^^^^ MBA and Programming ? conflicting ! Choose one.

Again you are missing the point, you should learn solving problems in computer science. And learn C,C++,Java,php..........etc with time.

All companies test your problem solving. And not your C,C++ syntax and also not language features.

Scorpy

28 Sep 09 05:25 PM

Re: Wanna Enter the Real Programmer's World



Hmmm.... well other questions also are there naa difference between C/C# and C plus plus ... also why is MBA and programming conflicting ? I mean wouldnt doing MBA after engineering get me a better job ?

a_k_s_h_a_y

28 Sep 09 05:51 PM

Re: Wanna Enter the Real Programmer's World



C, C++, C# are all different ways to doing the same thing. That is solving a problem.

If you spend all time only learning in depth C,C++,C#,Java trust me you will get a job no where.

MBA is for management jobs, you want to be a programmer/coder or a manager ?

indiancomet

1 Oct 09 11:18 AM

Re: Wanna Enter the Real Programmer's World



Quote:

Originally Posted by Scorpy (Post 1265662)

Hmmm.... well other questions also are there naa difference between C/C# and C plus plus ... also why is MBA and programming conflicting ? I mean wouldnt doing MBA after engineering get me a better job ?

Erm, I think for someone in college its very easy to get illusioned by this notion.

If you always wanted to do an MBA then why are you wasting and extra year doing your engineering. You could go for other 3 year courses which give you exposure to comp. sciences if thats all you wanted to do.

Sumeet a.k.a NEO

5 Oct 09 08:49 PM

Re: Wanna Enter the Real Programmer's World



Quote:

Originally Posted by a_k_s_h_a_y (Post 1255509)

What you need is Computer Architecture and Operating Systems Architecture/Internals/API.

Programming is crap, you learn a programming language in 3 days. Be it ASM, JAVA, C++, C.

And you learn Data Structures in a week and as for Algorithms, the day since you were born. Problem solving that is.

As for proficiency at a programming language it comes only with practice in that particular language and style. But its not really needed, for you as of now. later gain that. its necessary.

Hmm, I think he meant that learning the syntax of different programming languages is easy and can be learned in a few days and that the tough part is developing your problem solving skills which matter more than just knowing the syntax of different programming languages...

I believe that C is the mother of all programming languages and I just love it.. If you know C very well you can catch up with any programming language easily. But yeah, practice is the most important factor in both problem solving skills and programming skills... You know you can practice your programming skills with the book called "Test Your C Skills". It will really amaze you to see that in so many different ways you can perform a specific task. Then later on as someone said, take on projects. Working on projects will give you more challenging tasks and in the process of completing them, you will learn more complex stuffs.

Scorpy

5 Oct 09 11:41 PM

Re: Wanna Enter the Real Programmer's World



So im currently learning C++ . I think C++,JAva and python will be enough for coding ? I mean suppose I go for masters in computers then ? Though I do want comp hardware in masters .... :/ ... right now stuck with IT .... I doubt its possible Ill get hardware in comps in masters yea ?

No comments: