View Full Version : Show me the right way on programming
slacker_5
maybe the title is strange somewhat ;)
anyway , i think uniball is a professional programmer and making contribution to linux community ..
so that i'm asking here and i hope you (The programmer and knowlagable ppl ) give me the the right way ..
i'm going to attend Computer science college .so we'll start with C language ...
can you tell me please how can i be a programmer because as i know the graduated students don't understadn the source code for any linux application .. (that's not a joke ,it's truth)
i mean can you tell me after finishing C courses what books should i read to be able to program in linux ..
do i have to read operating systems books ,drivers related books , or books for developing applications .. i saw some books titled begining programming with linux and advanced linux programming ...
please help me ,i'm so confused .
:confused:
SYStems
Okay, I am not a programmer yet
I am still learning !
But here is what I found out
Learn history ...
CS related history...
Learn how things evolved
Learn about programming languages history
Learn when C was made? who made it? why did he make it?
Learn about the language that existed before C
Who made em and why etc....
This won't waste much time, I dont expect all that
to be writen in more then 10-50 pages !
I think, that progamming languages are the heart of CS
Learn aboout programming paradigms (functional, OOP, procedural, logical, generic, aop, ...)
Learn more then one language
I recommend this list
C , Python , Objective-C , OCaml
C ... is a low level procedural language, weakly typed, static sometimes described as portable assembly
Python ... is a very high-level, object-oriented, dynamic, strongly typed language
Objective-C ... is mainly a dynamic Object-Oriented system for C
OCaml ... the best language ever to bless earth, this is THE KING of programming languages, best of the best, creme de la creme
A program run in an environment, usually the OS, some languages offer a VM, virtual machine , as a layer between
the program and the OS ...
regardless, learn the OS, of course pick linux (debain or gentoo because they are non-commercial )or *BSD, never learn windows or a commercial linux distro, like suse, or caldera, or ehmmm... few others
the more you learn about the OS the better.
People who program with Java (a VM based language) are said to program in a black box ... they don't know
much about the OS the VM takes care of what they might have needed to know, in a way this is good less things to learn and to worry about, but I read in many places on the net, that this leads to a poor programmers, and you yourself
the more you learn, the more you will want to know how things really work, the OS the machine , the hardware etc...
That's really mostly it, and that's more then most people learn, and it could be harder then you would expect.
So to conclude it ...
Learn the CS history
Learn more then one language (from different paradigms and programming styles)
Learn the OS your programs runs in
And aaa...I was gonna forget, love vim and hate emacs
some people will tell you it's a taste thing and blablabla like that, don't believe them it's a trap
just smack em and run away!!!
slacker_5
aha . i see why our unversity take the Virual machine topics out of the course ...;)
thank you man.. so i figured out that i should read these two books
-1 Linux programming unleashed
-2 Advanced linux programming
-3 linux device drivers .
-4 Understanding the LINUX Kernel: From I/O Ports to Process Management
that what you mean by hard work and unexpected work ? ;)
SYStems
I have to warn you
I am not a professional
Ana ba self study programming
and what I told, is what I found out along the way
I could be wrong, and i do have my bias
fa as they say take my words with a "grain of salt"
also listen to other people, do your own
discoveries, develop your own opinions
just because someone is famous or have a degree
doesnt make his opinion right !!!
ya3ni... esma3 el kalam , we etabe3 a7sano
uniball
Though I'm not a professional programmer, I pretend to be :-)
> Learn history ...
> CS related history...
> Learn how things evolved
> Learn about programming languages history
I never cared about this!
> Learn aboout programming paradigms (functional, OOP, procedural, logical,
> generic, aop, ...)
I think that's OK
Dear slacker_5,
I expect all the CS "actually all students learning programming" in egypt "and
relying only on the doctors' knoledge" Not to understand and Linux/Unix
application. I believe you!
I have to say a first point. Don't mix C with C++, I mean that you said that
you are going to learn C, C++ is beyond my knoledge :-)
I learned from various sources, Books, man pages, tutorials, ........
Read as much as you can, But reading is something we can all do. If you don't
write your own code and browse the others code and learn IDEAS from it "You
gotta love OpenSource!", Smash your head sometimes in the wall as you are
trying to figure out a solution for your problem :-). You won't do any
progress!
TRead the books you are going to be gived by your instructor, But don't stick
to them or to the knoledge from him only.
Try reading "The C Programming Language" By karnighan & Ritchy (K&R)
Read "Data structures in C and C++" If you want deeper knowledge, It's rally a
great book.
I know some ppl. for example know nothing about the multidimensional arrays
simply because they didn't study it or it was ommitted. THAT'S NOT RIGHT! YOU
MUST LEARN AND KNOW ABOUT THEM, Nothing is called "not important or you won't
study it" here!
ANSI C is ANSI C
malloc()'ll work on both windows and Linux/Unix.
fread(), fwrite(), printf(), .............................
What's diferebt is GUI programming.
For me, I useGtk for GUI programming "and it has been ported to win32 too"
You don't have to stick to an IDE like visual studio.
Try cygwin if you need a shell similar to the linux one. If you need an IDE try
dev-cpp, A simple editor and a compiler'll do all what you want.
What i want to tell you is that you must differentiate between: An IDE, The
compiler, The source code editor, Visual studio. They are very simple but i
swear i know guys not understanding the difference.
> just because someone is famous or have a degree
> doesnt make his opinion right !!!
100% Agree.
Tawelt 3alekom! Good be with us all.
^3aFrEt^
Uni
e7na7 `adna multidimensional arrays fe a7`er rob3 sa3a fe a7`er mo7adra , bas ana ma7aletsh so2alha fle emte7an
keda hamot walla ha3eesh :p
btw slacker_5 is in bahrain so i think the education process will be diffrent from here
slacker_5
i just would say Thank you for you ( all ) because i can't express what what i feel about you ;)
wish you the best
uniball
slacker_5:Any Time
^3aFrEt^: I hope meeso is gona have a look here and give you a reply ;-)
sattia
salcker_5
u ve to learn how to program first; i.e I meant he art of programming.
Imagine that u want to make a Table urself. What would u do? u go and but a saw, wood, screws, ...etc then start making ur table??? I think u woud not do that. You should first learn how to carpenter then u r ready to use whatever carpenting tool u like. A manual saw will do; an electric one will be good.
Programming is analogous to this. Learn how to program first and then it wont matter whether u use C, C++, Assembly....etc
For myself I started when I was 12 with BASIC. When I grew up I switched to PASCAL then to Assembly of x86 and Z80.
When I was about to join the university I started to learn C and C++. I found that Im fond of it.
I thought I will not learn something else but suddenly PHP appeared and it was as good as C to me.
If you are going to dig into Linux then it is better to learn C. Also try to learn another additional language.
Also I support that u dnt learn programming to be ur profession. Programming is a way not an end. BTW do know that testifications of programmers in the states r refused. Like that was here in Egypt with actors and actresses.
meeso
[QUOTE]Originally posted by uniball
^3aFrEt^: I hope meeso is gona have a look here and give you a reply ;-)
certainly,
let's see,,
gentlemen with the shell;
I here by declare that, about programming:
*No noos good noos*
to the gentleman from the two seas, in order to be a programmer, you need
to know about *one thing* - only *one thing*, it's called: : : : :
*THE ONE THING* -- tadaaaa
it's also called, *GNU*.
sun, if you know well about the *GNU*, you have managed to master
programming, all languages, (except the Perl I think, it cannot be
mastered, & if that happened, it cannot be maneged, & if you could manege
it, you cannot have it - I'm referring to the former sentence "you have
manged to master programming", however, you're unable to understand this
parody since you're not a programmer yet, ((one need to be a programmer to
understand parodies you know)) don't worry, be patient, & remember, all you
have to learn about is the *GNU*, the great *GNU*, the *one* *GNU*)...
sun, in short;
*GNU* stands for: the Golf is Not Urinal.
yes, yes, yes. it's not easy to be a programmer.
god pleas you with the shell, & the gentlemen between the two seas.
would you excuse me,
m e e s o
MaherG
The only right things I found in this post are about reading lots of books,tutorials...etc. But about wether programming is tough, No. Programming is so simple, it just needs alot of practice. Programming concepts are extremely easy compared to whats taken in Engineering,Pharmacy...etc. Faculties. Probably most confusing thing in C++ is Polymorphism...which ehh is nothing like trying to design a digital controller.
Do what uniball said...Read alot, wether its part of the syllabus or not, you may never know when that piece of info will come in handy.
Now, my advice...Concentrate at one thing at a time.
Maher
joe_lite
ok dear
i wanna say that ur choice of programming language depend mainly on what u really intend to do with it
if u wanna to program for the web u need to lern a server side scripting language perl,php.....
actually programming in c is the best way as it still the widly used for general and special puppose programming because because many many libraries and toolkits r written for it BUT it's a pain when debugging
if u wanna write an application which is very portable to any platform then use Java (although is not fast as C++)
this is about languages BUT programming is programming,in any language nearly the same ,u will then need to learn some algorithms like sorting and searching and how to implement a linked list,stack , Queue, and to know about hashing and binary search tree
these r general algorithms ,then specify the area u wanna program for and learn about a library or toolkit for it ,ex. if u wanna build GUI application learn about gtk or qt
if u wanna write a 3d game learn about opengl
after that u have to learn the algorithms used within this toolkit inorder to know how to improve using it
then......................
ok ,that enough for now . do that then ask about next.
bye
joe
MaherG
I guess learning a language is one thing, getting to use it is probably an another one.
Maher
joe_lite
hi dear, i absolutly agree with u, but please remember how beginners shock when they learn all the aspects of a language and discover that they cannot do any usefull stuff with it, because no one told them that there is somthing called algorithms and knoe how they must learn ,so i recommend learning them both in parallel
bye
joe
vBulletin v3.0.1, Copyright ©2000-2004, Jelsoft Enterprises Ltd.