|
What is programming?
-
In the broadest sense, all the technical and non-technical activities involved
in the production of a program is called programming. By non-technical
activities, I mean those activities that are talent oriented. In its narrowest
sense, however, coding a program is called programming.
What is a program?
Who is a programmer?
-
Programmers are people just like the rest of the human beings; the only
difference (being so modest) is that they have got the ability and disposition
to program.
There's no limitation in their genders, ages, and colors. They could be a man or
a woman, as young as 14 years old, or as old as 78. There's no
difference. They all have got the same goal: programming.
-
After the microprogramming that the programmer's building blocks are ones and
zeros in this language, the assembly language is the actual programming tool
that programmers were faced with.
Programming Layers
-
As you see, the first programming layer, Microprogramming, is located in the
hardware level. This is the layer that talks directly to the physical devices.
For example, this layer handles where to store the result of the two numbers to
be added, and thereafter provides the upper layer with a cleaner interface, such
as ADD.
-
A series of instructions that the micro-program interprets is called the machine
language. At the top of this layer, the operating system is located which its
job is to provide the upper layer with a classified set of tools so that the
hardware layer is transparent to him. On top of the operating system, compilers,
editors and command interpreters are located, which in turn provide the upper
layer with another set of abstract tools.
-
From the technical point of view, a programmer who does microprogramming is
called a micro-programmer. Then it comes to the system programmer that his job
in turn is to develop system programs. Thereafter, we come to the application
programmers who program the applications, such as MS-Office, Internet Explorer,
and the like. Suffice to say that most of the world's existing programmers fall
in this group.
-
It is amazing, though, to know that each of the programmers mentioned in those
three categories feel that they are real programmers in comparison with the
other programmers at top layers; i.e., a system programmer believes that the
main job is done in his layer by himself and application programmers are just
some fun junkies trying to use his set of tools to develop some fancy
applications.
-
The same thing runs within the application programmers' world. Since the
programmers use different tools (actually languages) to develop a program, there
has been always a contact between the users of low-level languages and the
high-level ones.
-
The truth is that the programmers of each of those above-mentioned layers need
to interact with the computer in a suitable language of their own choice. For
example, to develop a lightweight applet to be placed on top of a web page, a
programmer chooses Java as his programming tool because Java is developed for
such purposes. He could use C++ to do the same thing but he certainly has to go
deeper to the subject. It goes without saying that a C++ programmer cannot solve
this problem as fast as a Java programmer, because of the available tools in his
programming language.
-
This, however, doesn't mean that C++ programming is trivial. The actual answer
lies behind this fact that all the companies are in need of performing their
projects in the shortest possible time. That is why we are faced with Rapid
Application Development or RAD these days. In most cases, project managers
expect their team members to develop this or that in the possible minimum time,
although they verify if a specific tool is suitable for such developments.
Modern Tools
-
This, in turn, brought a new edge of programmers to life: Visual Basic
programmers. In spite of its glamour abilities to do things as fast as possible,
I actually don't understand the usefulness of a programming language suffering
from the lack of pointers. As girls are the sweet candies of this world,
pointers are the candy tools in the hands of a programmer. Now, what if they are
not available in a language? How can you hang on with such programming
languages?
-
Philip Kahn, the Borland companies cofounder, says that the BASIC language
belongs to the 1960's, no matter which variety of this language is on the market
today. Back to those days of DOS programming, there was no wizard to hide the
details from the programmer, and programmers had to know how to program their
logic in their favorite programming language. If they didn't, they could never
develop a software. But today, everything is changed. You run the compiler,
point your mouse cursor to the File menu, and you select a new project item.
Within less than some seconds, everything is setup for you! Just compile and let
it go! Is it actually called programming? You judge!
-
There are many modern programmers who even don't know how to interact with the
operating system they are programming for. When they do not have any idea about
the actual environment they are programming for, how can they develop an
error-free full functioning program under that environment?
-
The truth is that everything has been done in the lower layers and the result is
dedicated due to the optimal series of functions to the programmers. These
functions are called Application Programming Interfaces, or APIs. Since much of
the complexity is hidden from the users of APIs, they cannot ruin the
application, unless in some certain circumstances.
-
In spite of this encapsulation, however, we are still faced with programs that
ruin the operating system due to their weak functioning. How many times have you
restarted your Windows without knowing the actual reason for its malfunctioning?
Huh?
-
Due to the great improvements in hardware technology, Giga Hertz speeds are
handy today. The modern programmers in turn do not think about the speed of
their logics they are going to program. Imagine the Karl Gauss' scenario: less
than a minute against more than 47 minutes!
-
That's why you run Windows Media Player 7.0 under a Pentium 133Mhz, and you have
to wait for more than 30 seconds or so until the hard disk activity finishes and
the program settles on the screen.
-
I recall those days that we could see a video CD on Windows 3.1 under our 66MHz
CPU with a Xing player or the like. Now the CPU speed, in this example, is
increased by means of 67MHz, but the player speed is decreased by means of 50%.
Why is that then?
Real programmers
-
There are a variety of thoughts judging a real programmer: some believe that
"Real programmers don't use Pascal", and others say, "Real programmers hate
COBOL". To put these malicious opinions aside, a real programmer is the one who
cares about his software at three stages: design, development, and maintenance.
-
By design, I mean he tries to get peoples' opinions and their logics at design
time. Some people don't understand programming but they have got great abilities
to solve different problems on the paper. A real programmer advantages such
opinions and welcomes any criticism.
-
By development, I mean he tries to keep his eyes open on what he is developing.
He never says that his program will run under Pentium III, so it doesn't matter
if he loads and unloads some DLLs back and forth during the lifetime of his
program. He, instead, tries to avoid such things when possible.
-
By maintenance, I mean he accepts that he is a human being and he might do
things wrong. So, he welcomes his clients' criticism, and tries to solve any bug
in his software gracefully.
-
Most of the programmers around the world are philosophers! They usually try to
impose their thoughts to others and they enjoy talking about their abilities and
dispositions. Some of them even do not have a joy in their life, and all they
have got is their computers and their books. Go and read articles about
programmers by yourself; about those who reside at Silicon Valley. It is a sad
story, but that is the truth.
-
Look before you leap! If you plan to start programming and be classified as a
programmer, keep in mind that everything is possible when quality is no object.
Being a good programmer is totally hard. You have to learn new technologies day
by day, mostly by yourself, and you have to keep yourself up to date after being
a professional in one or more categories about programming.
-
The very important thing you should never forget is the day you are going to
start! Most of the professional computer programmers are usually self-taught and
has been at the same position you are today. But after some years, they start
believing in themselves! They will become proud of this or that and their
abilities and they think they are really something! So they start to stop
questioning which in turn results of being obsolete after some years.
List of Program Languages
-
2.PAK , 20-GATE , 473L Query , 51forth , A+ , A++ , A-0 , ABAP
, ABC , ABC_ALGOL , ABLE , ABSET , ABSYS , ACC programming language , Accent ,
Acceptance, Test Or Launch Language , Action! , ACS , ActionScript , Ada , Aleph
, ALGO , ALGOL , AmigaE , AMPL , APL , AppleScript , There are many array
programming languages. , ARS++ , ASP , ASN.1 , AspectJ , Assembly , Atlas
Autocode , Aubit-4GL , AutoIt (http://hiddensoft.com) , AutoLISP , AWK (awk,
gawk, mawk, nawk) , Languages needing attention; , Actor , Alan , Alphard ,
AREXX , Autocoder , BASIC - see also List of BASIC dialects (by platform) , bc ,
BCPL , BETA , Bigwig , Bistro , BLISS , Blue - rejected prototype for Ada , Blue
, boo , Bourne shell (sh) , Bourne-Again shell (bash) , Business Process
Execution Language (BPEL) , BUGSYS , BuildProfessional , C-- , C++ , C# , Caché
ObjectScript (see also Caché Basic) , Caml , CeeBot , CSS , Cecil , Cg , CHAIN ,
Charity , CHILL , ChucK , Cilk , Clarion , Clipper , CLIPS , CLOS , CLU , CMS-2
, ColdFusion , COBOL , CobolScript , COMAL , Component Pascal , Concurrent Clean
, CORAL66 , Common Intermediate Language (CIL) , Common Lisp , COWSEL , CPL , C
shell (csh) , Cue , Curl , Cyclone , DASL , Databus , Dataflex , dBASE , dc ,
Delphi , Dialog Manager , DIBOL , Dylan , Edinburgh IMP , Eiffel , ElastiC ,
Elan , Emacs Lisp , Elf , Enterprise Generation Language (EGL) , Erlang ,
Escapade (server-side programming) , Esterel , Euphoria , Euclid , Euler , EXEC
, EXEC2 , F# , Factor , FALSE , Felix , Ferite , FL , FLOW-MATIC , FOCAL , Focus
, FOIL , Forth , Fortran , FP , Frink , Frontier , G-java , GAMS , GML , Gclisp
, Gema , GEMBASE , GENIE , GJ , Godiva , Gödel , GPSS , Green - prototype for
Ada , Groovy , HAL/S (real-time aerospace programming language) , HAScript ,
Haskell , Heron , HLA - "High Level Assembler" , High Level Assembly , Hugo ,
HyperTalk , ICI programming language , Icon , IDL programming language , IMP ,
Informix-4GL , Inform , Information Processing Language (IPL) , Intercal , Io ,
JADE , Java , JavaScript , JCL , JOSS , Joule , JOVIAL , Joy , Jython , , Kid ,
Kielix , Kiev , Kogut , KRYPTON , LabVIEW , Lagoona , LaTeX , Lava , Leda ,
Leopard , Lexico , Limbo , LINC , Lingo , Lisp , Logo , LPC , LSE , Lua , Lucid
, Lustre , LYaPAS , M4 , MAD , MADCAP , Mary , MATLAB , Mathematica , METAL ,
Miranda , Miva , Mercury , Mesa , Microcode , Mindscript , ML , Moby , MODCAP ,
Modula , Modula-2 , Modula-3 , Moto , Mouse , MSIL (deprecated name for Common
Intermediate Language) , MUMPS , Natural , Nemerle , NESL , NGL , Nial , Nil ,
Nice , Nosica , o:XML , Oberon , Objective-C , Objective Caml , Object Pascal ,
Obliq , Occam , OPS5 , Organiser Programming Language (OPL) - cf. Psion
Organiser , Oz , Pascal , Free Pascal , Object Pascal (Delphi) , Turbo Pascal ,
PEARL , Perl , PHP , Pico , Pike , PILOT , Pizza , PL-11 , PL/SQL , PL/B , PL/C
, Plankalkül , PL/I , PL/0 , PL/M , Pliant , Poplog , POP-11 , PORTRAN ,
PostScript , Povray , Powerbuilder , Processing , Progress 4GL , Prothon ,
Prolog , Turbo Prolog , Proteus , Python , QuakeC , Rascal , Ratfor , Ratfiv ,
REBOL , Red - rejected prototype for Ada , REFAL , Report Program Generator
(RPG) , Revolution , REXX , Rigal , Rlab , Robot Scripting Language (RSL) , RPG
, Ruby , S2 , S-Lang , SAIL , SAKO , SAS , Sather , Scala , Scriptol , Scheme ,
Sed , Self (or "SELF") , SETL , SIGNAL , SIMSCRIPT , Simula , SISAL , SMALL
Machine Algol Like Langanuge , Small , Smalltalk , SML , Snobol , Snowball ,
SPARK , SPITBOL , SP/k , SQL , Squeak , SR , SSL , SuperCollider , TACL , TACPOL
, TADS , Transaction Application Language , Tcl , teco , TELCOMP , Tempo , Today
, Tom , tpu , Trac , Turing , Tutorial D , TXL , Ultra 32 , Unicon ,
UnrealScript , Verilog is a hardware description language , VHDL is a hardware
description language , Visual DataFlex , Visual DialogScript , Visual FoxPro ,
Visual Objects , Water , XOTcl , XPL , xHarbour , XUL , XBL , xbScript
(xBaseScript , XSLT and XPath , YAFL , Yellow - rejected prototype for Ada ,
Yorick , Z is a program specification language, like UML. , ZPL , ZZT-oop , ZOPL
, ZUG
|