• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
  • Tim Cooke
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Liutauras Vilda
  • Rob Spoor
  • Junilu Lacar
  • paul wheaton
Saloon Keepers:
  • Stephan van Hulst
  • Tim Moores
  • Tim Holloway
  • Carey Brown
  • Scott Selikoff
  • Piet Souris
  • Jj Roberts
  • fred rosenberger

What is programming actually?

Ranch Hand
Posts: 393
Open BSD BSD Debian
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
[I put it  here  because don't know where else fits. If some more knowledgeable Rancher know  can easily move it thanks ]  

We professionals(industry and academia) define programming, as a general human activity, to mean the act of extending or changing a system’s functionality.

Programming is a widespread activity that is done both by nonspecialists (e.g., consumers who change the settings of their alarm clock or cellular phone) and specialists (computer programmers, luckily the audience for this thread).

In a setting of construction of software systems, programming is the step between the system’s specification and a running program that implements it. The step consists:

   in designing the program’s architecture and abstractions and
   coding them into a programming language.

This is a broad view, perhaps broader than the usual connotation attached to the word “programming” by common people. It covers both programming “in the small” and “in the large”. It covers both (language-independent) architectural issues and (language-dependent) coding issues. It is based more on concepts and their use rather than on any one programming language.

We as professionals also find that this general view :

   is natural for teaching programming.
   It is unbiased by limitations of any particular language or design methodology.
   When used in a specific situation, the general view is adapted to the tools used, taking into account their abilities and limitations.

Both science and technology

Programming as defined above has two essential parts:

   a technology and
   its scientific foundation.

The technology consists of:

   practical techniques, and

allowing us to do programming.

The science consists of a broad and deep theory with predictive power, allowing us to understand programming. Ideally, the science should explain the technology in a way that is as direct and useful as possible.

If either part is left out, we are no longer doing programming. Without the technology, we are doing pure mathematics. Without the science, we are doing a craft, i.e., we lack deep understanding. Teaching programming correctly therefore means teaching both the technology (current tools) and the science (fundamental concepts).

   Knowing the tools prepares the student for the present.
   Knowing the concepts prepares the student for future developments.

More than a craft

Despite many efforts to introduce a scientific foundation, programming is almost always taught as a craft. It is usually taught in the context of one (or a few) programming language(s) (e.g., Java, complemented with Haskell, Scheme, or Prolog). The historical accidents of the particular languages chosen are interwoven together so closely with the fundamental concepts that the two cannot be separated.

There is a confusion between tools and concepts. What’s more, different schools of thought have developed, based on different ways of viewing programming, called “paradigms”: object-oriented, logic, functional, etc. Each school of thought has its own science. The unity of programming as a single discipline has been lost.

Teaching programming in this fashion is like having separate schools of bridge building: one school teaches how to build wooden bridges and another school teaches how to build iron bridges. Graduates of either school would implicitly consider the restriction to wood or iron as fundamental and would not think of using wood and iron together.

The result is that programs suffer from poor design. Here’s an example based on Java, but the problem exists in all languages to some degree.

Concurrency in Java is complex to use and expensive in computational resources. Because of these difficulties, Java-taught programmers conclude that concurrency is a fundamentally complex and expensive concept. Program specifications are designed around the difficulties, often in a contorted way. But these difficulties are not fundamental at all. There are forms of concurrency that are quite useful and yet as easy to program with as sequential programs (e.g., stream programming as exemplified by Unix pipes). Furthermore, it is possible to implement threads, the basic unit of concurrency, almost as cheaply as procedure calls. If the programmer were taught about concurrency in the correct way, then (s)he would be able to specify for and program in systems without concurrency restrictions (including improved versions of Java).
Posts: 2907
Google Web Toolkit Eclipse IDE Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I have a simpler reply:

programming noun

www.merriam-webster.com wrote:pro·​gram·​ming | \ˈprō-ˌgra-miŋ,  -grə-\
variants: or less commonly programing
Definition of programming
1 : the planning, scheduling, or performing of a program
2a : the process of instructing or learning by means of an instructional program
b : the process of preparing an instructional program for a device (such as a computer)

Now let's look at program:

program noun

www.merriam-webster.com wrote:pro·​gram | \ˈprō-ˌgram,  -grəm  \
Definition of program (Entry 1 of 2)
1 [ Late Latin programma, from Greek ] : a public notice
2a : a brief usually printed outline of the order to be followed, of the features to be presented, and the persons participating (as in a public performance)
b : the performance of a program
especially : a performance broadcast on radio or television
3 : a plan or system under which action may be taken toward a goal

Harry Kar
Ranch Hand
Posts: 393
Open BSD BSD Debian
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

salvin francis wrote:I have a simpler reply:...

Lol salvin the intent was blossom some discussion on the topic instead of vocabulary definitions.
Seems to me out there  is diffused a misconception about learn programming and coding
pie. tiny ad:
Building a Better World in your Backyard by Paul Wheaton and Shawn Klassen-Koop
    Bookmark Topic Watch Topic
  • New Topic