No matter what type of programming you want to try or what level you
want to be at, consider taking classes at school or your local community
college. Don't be intimidated by terms such as "Computer Science." Any
class you can get into without any prerequisites should focus on
teaching the fundamentals of programming - but check with the instructor
or a counselor beforehand to make sure it is what you are looking for,
as classes like "Computer Literacy" may focus more on becoming familiar
with office applications and the like.
“Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves.”
Monday, 23 January 2012
How to be a Programmer?(Part 7- Programming Scientists)
Programming scientists are very advanced programmers, who instead of
working on developing applications, work on developing computing
technologies such as encryption, programming languages and data mining
algorithms. This level is seldom achieved without academic study and
dedication.- Accumulate the scientific knowledge equivalent to a B.A./Diploma degree in computer science. This can be done either by:
- Taking an actual academic degree (which is what usually happens)
- Getting the courses' outlines for such a degree from one of the modern universities and taking the courses either by self study or as separate courses. This could be achieved theoretically, but the recommended path is the first.
- Putting Worcestershire sauce on volume 1 of Knuth's The Art of Computer Programming and stabbing it with a fork until pudding-like.
- Decide a field of specialty. The more specific, the better. This depends on your preferences, however, here is a list of some of the major topics in computer programming science:
How to be a Programmer?(Part 6- System Programmers)
Programming scientists deal with the science of programming not the specific implementations of it. Do not tie yourself to a specific platform.
- Follow the first three steps for Desktop Applications Programmers.
- Take an introductory course in Linear Algebra.
- Take a course in Calculus.
- Take a course in Logic and/or Discrete Mathematics.
- Introduce yourself to different bare operating systems. This can be done by:
- Getting an idea on how operating systems are installed.
- Learning how to install different operating systems on one PC(This is optional but recommended).
- Installing more than one operating system. Do not install any helping packages on the systems, use the bare functionalities provided by the operating systems.
- Take a course(or alternatively read books) on computer hardware architecture.
- Develop an understanding of the different computer hardware platforms.
- Get an introductory familiarization with the assembly language of the hardware platform/operating system of choice (you will later learn the assembly of other platforms/systems)
- Learn the ANSI C and C++ languages, along with the concepts of procedural programming.
- Understand and practice C/C++ standard libraries on the platform of choice especially Standard Template Library (STL) and maybe Active Template Library (ATL).
How to be a Programmer?(Part 5- Library/Platform/Framework/Core Programmers)
Core programmers are merely advanced programmers who made the
transfer from programming applications to programming code units to be
used by other programmers.
- Learn a programming language that supports building reusable components/packages if you have not done so already in 1.
- Take an advanced course in UML and ORM . Most library developers use one or both of them.
- Take a course in software engineering.
- Learn at least modular, component-based, object oriented, and event-driven programming techniques and concepts. The more programming paradigms and languages you cover the more successful you become as a library/package programmer.
How to be a Programmer?(Part 4-Distributed Applications Programmers)
Distributed application
programming is considered by many to be one of the hardest to learn and
requires diverse knowledge in computer and communication technologies.
- Take a speed introduction to telephony systems and their hardware. This step is optional. However, it is very useful in understanding network topologies.
- Familiarize yourself with networking hardware architectures and devices such as hubs, switches and routers.
- Take a course in networking protocols and essentials. You need a good understanding of the Open Systems Interconnection (OSI) model, Ethernet, IP, TCP, UDP and HTTP before you start programming distributed applications.
- Learn the XML language and familiarize yourself with it.
- Do step 2 and 3 in "prepare yourself for desktop application programming"
- Start by learning a shell scripting
language. For Windows based programming, that would be any script that
works with Windows Scripting Host. For Linux based programming, Bash
scripts and Perl will be sufficient. Javascript is strongly recommended for this in both platforms for the following reasons:
- It is supported by almost any scripting host in any operating system (Windows Scripting Host supports java script by default, most Linux distributions has a package for javascript scripting console support).
- It is considered to be easier to learn by many developers.
- It has an ALGOL derived syntax which familiarizes you with much more other programming languages when you need to choose a second programming language (C, C++, C#, Java and J# all have ALGOL derived syntax)
- By learning javascript, you familiarize yourself with client-side scripting of web pages which is a bonus side-effect!
- Apply only procedural programming using your scripting language of choice at first. Later, you can use more advanced programming techniques and paradigms according to your scripting language and what it supports. All scripting languages has some procedural programming aspects at some level.
- Use the scripting language you learned to write scripts that perform communications between machines. Learn what is necessary for doing that. Simple communications will suffice.
- Make a transfer to a desktop scripting/programming language. Preferably, one that is a multi-paradigm language such as Python.
Take a simple introduction to that second language. Java is considered
by most programmers to be the language of choice for many reasons.
However C# is gaining momentum fast in this field. Java and C# are
preferred for the following reasons:
- They are object oriented programming languages which shields programmers in large teams from implementation details as they both supports components (units of code, pre-compiled, that perform a certain task and can be used in other programs)
- They support event driven programming as well as OO and procedural programming at some level.
- The framework that the language is built upon is distributed by nature (in the case of Java).
- The availability of many ready-made packages that deal with networking both as open source code and framework built-in packages; makes it easier for programmers to build upon the work of others.
- Concentrate more on the core features of the language, especially those supporting networking. Pay less attention to user interface elements such as outputting, window design and techniques, and user interface elements.
- Take a course on distributed applications design and architectures. This can be done using books, online tutorials or academic courses. However, understanding the architecture of distributed applications and its concepts is necessary.
- Learn about building serviced components and services using your programming language of choice.
- Learn one or more of the following
technologies. It is recommended that you get at least an introduction to
all of them. Most distributed application programmers do not stop at
one or two programming languages, but learn at least one programming
language on each operating system. That is because if you want your
application to be "distributed", you should provide a version of it at
least for each major operating system.
- Common Object Request Broker Architecture (CORBA)
- Simple Object Access Protocol (SOAP)
- Asynchronous JavaScript and XML (AJAX)
- Distributed Component Object Model (DCOM)
- .NET Remoting
- XML Web Services
Labels:
Article
How to be a Programmer?(Part 3- Desktop Application Programmers)
Most desktop programmers write code for business solutions, so
getting an idea about businesses, their organizational and financial
structure will be a big time saver.
- Learn about the different computer hardware architectures. An introductory level course in digital circuits design and another in computer architecture is useful, however, some see it as being advanced for a starting point, so reading two or three tutorial articles [1] [2] might suffice, then you can go back to this step later, after you learn your first programming language.
- Learn an entry level (kids) programming language[3]. Don't be shy to learn such a language just because you're older than being called a "kid". These programming languages can ease up the pain in learning your first programming language tremendously. However, this step is optional. It can also be done before the preceding step
- Get an introduction to the procedural, object oriented, and functional programming paradigms.
- Take an introductory course in one of the procedural programming languages. No matter what language you choose later to be your language of choice, it will require procedural programming at some level. Also, procedural programming is reported by most programmers to be the easiest to use as a starting point to get the idea of programming in general.
Labels:
Article
How to be a Programmer?(Part2- Web Programmers)
Distributed application
programming is considered by many to be one of the hardest to learn and
requires diverse knowledge in computer and communication technologies.
- Take a speed introduction to telephony systems and their hardware. This step is optional. However, it is very useful in understanding network topologies.
- Familiarize yourself with networking hardware architectures and devices such as hubs, switches and routers.
- Take a course in networking protocols and essentials. You need a good understanding of the Open Systems Interconnection (OSI) model, Ethernet, IP, TCP, UDP and HTTP before you start programming distributed applications.
- Learn the XML language and familiarize yourself with it.
- Do step 2 and 3 in "prepare yourself for desktop application programming"
- Start by learning a shell scripting language. For Windows based programming, that would be any script that works with Windows Scripting Host. For Linux based programming, Bash scripts and Perl will be sufficient. Javascript is strongly recommended for this in both platforms for the following reasons:
Labels:
Article
How to be a Programmer?(Part 1)
It may or may not be true that you can learn a programming language
in 7 or 21 days, and it may or may not depend on what "learn to program"
book you read. However, it does take a lot longer than that to gain
experience in how to use a language most effectively. It is a cumulative
process that builds up your skills day after day and year after year.
Programming can also be fun and rewarding (mentally, spiritually and
financially). This guide does not promise to give a magical easy way to
becoming a programmer, and the ordering of the steps is not sacred, but
you'll get a general outline of how to become a programmer in one of the
modern programming fields.
Labels:
Article
Subscribe to:
Comments (Atom)
