Καλησπερα


Tech

Προτεινομενα

Η ιστορία των υπολογιστών

 Οι υπολογιστές ποια αποτελούν καθημερινό εργαλειο. Ποία είναι όμως η ιστορία και η εξέλιξη τους? Εξελιξη Υπολογιστων Η ιστορία των υπολογισ...

Η ιστορία των υπολογιστών

Ιστορία γλωσσών προγραμματισμoύ


Ιστορία γλωσσών προγραμματισμών



Εισαγωγή

Ορισμός: Γλώσσα προγραμματισμού λέγεται μια τεχνητή γλώσσα που μπορεί να χρησιμοποιηθεί για τον έλεγχο μιας μηχανής, συνήθως ενός υπολογιστή. Οι γλώσσες προγραμματισμού, ομοίως με τις γλώσσες που χρησιμοποιούν οι άνθρωποι μεταξύ τους, ορίζονται από ένα σύνολο συντακτικών και εννοιολογικών κανόνων, που ορίζουν τη δομή και το νόημα, αντίστοιχα, των προτάσεων της γλώσσας.

Οι γλώσσες προγραμματισμού χρησιμοποιούνται για να διευκολύνουν την οργάνωση και διαχείρηση πληροφοριών, αλλά και για την ακριβή διατύπωση αλγορίθμων. Ορισμένοι ειδικοί χρησιμοποιούν τον όρο γλώσσα προγραμματισμού μόνο για τυπικές γλώσσες που μπορούν να εκφράσουν όλους τους πιθανούς αλγορίθμους. Μη-υπολογιστικές γλώσσες όπως η HTML δεν λέγονται συνήθως γλώσσες προγραμματισμού.

Υπάρχουν χιλιάδες διαφορετικές γλώσσες προγραμματισμού, και κάθε χρόνο δημιουργούνται περισσότερες. [1]

 

Γλώσσες προγραμματισμού πριν το 1940

Οι ρίζες των γλωσσών προγραμματισμού απαριθμούν πολλά χρόνια πριν την δημιουργία του πρώτου ηλεκτρονικού και προγραμματίσιμου υπολογιστή.

Το 1801 ο αργαλιός Jacquard χρησιμοποιεί διάτρυτες κάρτες για το αυτόματο πλέξιμο όμορφων σχημάτων στα πλεκτά.

Μέσα σε μια ενιάμηνη περίοδο μεταξύ 1842 και 1843 η Ada Lovelace έγραψε τον πρώτο κώδικα για μια μηχανή που σχεδιάζε μέχρι και τον θάνατό του ο Βρετανός μαθηματικός Charles Babbage, την λεγόμενη Analytical Engine.

Δημιουργούνται μοντέλα όπως ο Λάμδα Λογισμός και η Μηχανή του Turing. [2] [3] [4]

 

Γλώσσες Προγραμματισμού την δεκαετία του 1940

Με την δημιουργία του πρώτου ηλεκτρονικού υπολογιστή (ENIAC), δημιουργήθηκε και η ανάγκη της ύπαρξης ενός εύκολου τρόπου, να μπορούν οι προγραμματιστές να γράψουν εφαρμογές γι’ αυτόν. Η έλλειψη ταχύτητας και μνήμης, των τότε υπολογιστικών μοντέλων, επέβαλαν στους προγραμματιστές να γράφουν assembly. Πολύ σύντομα όμως, ανακαλύψανε ότι η χρήση της assembly ήταν επίσης προβληματική λόγω της μεγάλης προσπάθειας που επέβαλε η σύνταξη προγραμμάτων με αυτήν καθώς και η απασφαλμάτωσή τους.

Το 1948, ο Konrad Zuse δημοσίευσε ένα άρθρο για την γλώσσα προγραμματισμού που επινόησε, την Plankalkül. Η γλώσσα αυτή όμως δεν υλοποιήθηκε τότε αλλά μετά από πολλά χρόνια, λόγω πολέμου. Άλλες σημαντικές γλώσσες που αναπτύχθησαν εκείνη την πρώτη περίοδο των υπολογιστών ήταν η C-10 και η ENIAC coding system. Όλες οι γλώσσες αυτές ήταν σχεδιασμένες για τον υπολογιστή ENIAC. [2]

Γλώσσες Προγραμματισμού τις δεκατίες 1950 και 1960

Από την δεκαετία του 1950 δημιουργούνται 3 μοντέρνες γλώσσες προγραμματισμού, των οποίων απόγονοι υπάρχουν ακόμα και σήμερα. Οι γλώσσες αυτές είναι: η COBOL (COmmon Business Oriented Language) η LISP (LIStProcessor) και η FORTRAN (FORmula TRANslation).

Την ίδια περίοδο κάνει την εμφάνισή της και η πρώτη έκδοση της ALGOL (ALGOrithmic Language), η ALGOL-60, έστω σε φάση σχεδιασμού. Η γλώσσα αυτή εισήγαγε τα εξής δύο νέα στοιχεία: την ύπαρξη μπλόκ κώδικα και την ύπαρξη ξεχωριστής εμβέλεια μεταβλητών μέσα στα μπλόκ αυτά.

Άλλη καινοτομία που συνόδευε την ALGOL ήταν η δημιουργία ενός φορμαλισμού για την περιγραφή του συντακτικού των γλωσσών προγραμματισμού, η λεγόμενη BNF μορφή (Backus-Naur Form).

Μέσα στις δύο αυτές δεκαετίες, και με τις βάσεις να έχουν ήδη οριστεί με τις υπολοιήσεις των παραπάνω γλωσσών, μέχρι το τέλος της δεκαετίας του 1960, ήδη αρχίζουν οι γλώσσες προγραμματισμού να πληθαίνουν και να εισάγει η καθεμία νέες δυνατότητες. Άλλες σημαντικές γλώσσες που αναπτύχθηκαν ήταν: η APL, η Simula και η BASIC. Επίσης ξεκίνησε και ο σχεδιασμός της γλώσσας Pascal. [2]

Γλώσσες Προγραμματισμού 1967 με 1978

Η περίοδο αυτή ήταν πολλή σημαντική για την ανάπτυξη των γλωσσών προγραμματισμού. Δημιουργούνται γλώσσες όπως η C, η ML και η Prolog, και δημιουργούνται πλέον οικογένειες γλωσσών από τις οποίες κάθε σημερινή μοντέρνα γλώσσα έχει τουλάχιστον έναν πρόγονο.

Μέσα στα δέκα αυτά χρόνια έκανε την εμφάνισή της η γνωστή διαμάχη για το αν η χρήση της εντολής GOTO πλήττει τις αρχές τους διαδικαστικού προγραμματισμού και εαν θα πρέπει οι νέες γλώσσες να μην περιέχουν την εν λόγω εντολή καθόλου, για να εμποδίζει τους προγραμματιστές στο να δίνουν «κακό στυλ» στα προγράμματά τους.

Σημαντικές γλώσσες που αναπτύχθηκαν ήταν: η Pascal και η FORTH, καθώς και για πρώτη φορά εισάγεται στην οικογένεια των γλωσσών μια γλώσσα επερωτήσεων, η SQL, η οποία στην συνέχεια εξελίχθηκε σε κανονική προγραμματιστική γλώσσα. [2] [3]

Γλώσσες Προγραμματισμού την δεκαετία του 1980

Δημιουργείται η πρώτη αντικειμενοστρεφής γλώσσα, η C++ βασισμένη σε τεράστιο βαθμό πάνω στην ήδη υπάρχουσα, C. Επιπροσθέτως, ένα νέο προγραμματιστικό στυλ, το να γράφει κανείς προγράμματα σε κομμάτια (modules),καταλήγει στην δημιουργία γλωσσών όπως η Modula.

Σημαντικές αλλαγές γίνονται και στον τρόπο ένωσης των γλώσσών προγραμματισμού με τα μηχανήματα, με την κίνηση της RISC στο να προτείνει αλλαγές στην σχεδιάση του hardware ώστε να προορίζεται για μεταγλωττιστές και όχι για assembly (ενδιάμεσος κώδικας).

Άλλες γλώσσες που αναπτύχθηκαν είναι: η ADA, η Eiffel και η γνωστή Perl. [2] [3]

Γλώσσες Προγραμματισμού την δεκαετία του 1990

Σταθμό στην εξέλιξη των γλωσσών προγραμματισμού αποτελεί η δεκαετία αυτή καθώς ξεκινάει η εποχή του internet, κάτι που δημιουργεί νέες ανάγκες και τάσεις στην τεχνολογία των γλωσσών. Οι γλώσσες πλέον αρχίζουν να οριμάζουν και να αποκτούν standars. Μεγάλη προσπάθεια γίνεται στο να βοηθηθούν οι προγραμματιστές στο να γράφουν γρήγορα και εύκολα κώδικα, κάτι που οδηγεί στην δημιουργία των πρώτων IDE, ή σε ιδέες όπως το garbage collection. Γενικά αναπτύσσονται πολύ οι αντικειμενοστρεφείς γλώσσες και πλέον μπαίνει και η Microsoft δυναμικά στο παιχνίδι με την C# και την Visual BASIC.

Όσον αφορά το internet, δημιουργούνται γλώσσες που δεν απαιτούν μεταγλώττιση πλέον, ώστε να είναι ανεξάρτητες πλατφόρμας (script languages).

Σημαντικές γλώσσες που απαπτύχθηκαν: η Haskell, η Python, η Java, η Ruby, η Javascript και η PHP. [2]

Γλώσσες προγραμματισμού και τρέχουσες τάσεις

Καθημερινά, η εξέλιξη των γλωσσών προχωράει. Νέες δημιουργούνται, παλιές οριμάζουν ή εξελίσσονται κλπ. Από τον 1940, πλέον έχουν προστεθεί πάρα πολλά χαρκατηριστικά στις γλώσσες, ανάλογα και με το τι επέβαλαν οι εξελίξεις στα υπολογιστικά συστήματα όλα αυτά α χρόνια. Η ύπαρξη πολύπλοκων, εξελιγμένων, ασφαλών, διαφορετικών κλπ συστημάτων όλα αυτά τα χρόνια καθοδηγούσε την εξέλιξή τους και ακόμα και σήμερα το κάνει.

Ενδεικτικά, σήμερα αποτελούν πολύ σημαντικά θέματα για τις γλώσσες προγραμματισμού, τα εξής:

Υποστήριξη unicode χαρακτήρων στον κώδικα, διεπαφές με βάσεις δεδομένων, ασφάλεια και υποστήριξη XML για γραφικά περιβάλλοντα και άλλα. [2]

Άνθρωποι με σημαντικό ρόλο στην ιστορία των γλωσσών προγραμματισμού

1. Edsger Dijkstra

2. John Backus, δημιουργός της Fortran.

3. John McCarthy, δημιουργός της LISP.

4. Alan Cooper, δημιουργός της Visual Basic.

5. Anders Hejlsberg, δημιουργός της Turbo Pascal και της C#.

6. Kenneth E. Iverson, δημιουργός της APL.

7. Bill Joy, δημιουργός του vi, αρχικός συγγραφέας του BSD Unix, και εισιγητής του λειτουργικού συστήματος SunOS, που τώρα έχει γίνει το Solaris.

8. Brian Kernighan, συν-συγγραφέας του πρώτου βιβλίου της γλώσσας C μαζί με τον Dennis Ritchie, συν-συγγραφέα των γλωσσών AWK και AMPL.

9. John Von Neumann, εισηγητήε της ιδέας του λειτουργικού συστήματος (operating system).

10. Dennis Ritchie, δημιουργός της C.

11. Bjarne Stroustrup, δημιουργός της C++.

12. Ken Thompson, δημιουργός τουUnix.

13. Niklaus Wirth δημιουργός της Pascal και της Modula.

[2]

Σχετική βιβλιογραφία:

[1] Ελληνική βικιπαίδεια: http://el.wikipedia.org/wiki/Γλώσσα_προγραμματισμού

Ορισμός των γλωσσών προγραμματισμού

[2] Αγγλική wikipedia: http://en.wikipedia.org/wiki/History_of_programming_languages

Μια αρκετά περιεκτική ιστορία των Γλωσσών Προγραμματισμού. Το άρθρο χωρίζεται στιε εξής ενότητες: Η ιστορία από το 1940 (και πιο πριν) μέχρι σήμερα, τρέχουσες τάσεις, πρόσωπα που παίξαν σημαντικό ρόλο.

[3] Αγγλική wikipedia: http://en.wikipedia.org/wiki/Programming_language#History

Σύντομη ιστορία των Γλωσσών με αναφορές σε γλώσσες-σταθμούς όπως FORTRAN, COBOL, C κλπ.

[4] Αγγλική wikipedia: http://en.wikipedia.org/wiki/Timeline_of_programming_languages

Πίνακας με χρονολογίες, που περιέχει τις αντίστοιχες Γλώσσες (ανάλογα με το πότε δημιουργήθηκαν). Επίσης περιέχει πληροφορίες για τις Γλώσσες όπως τους δημιουργούς τους, σε ποιες Γλώσσες βασίστηκαν κλπ.

[5] Ελληνική βικιπαιδεία: http://el.wikipedia.org/wiki/Ιστορία_γλωσσών_προγραμματισμού

Αρκετά, έως πολύ, φτωχό άρθρο που βασίζεται στο αντίστοιχο άρθρο της αγγλικής Wikipedia. Εξηγείται κυρίως η μετάβαση από την Γλώσσα Μηχανής σε κάποιες Γλώσσες όπως η ALGOL και η COBOL, και για ποιους λόγους έγινε.

Σημαντικές γλώσσες προγραμματισμού και πότε δημιουργήθηκαν

· 1957 – FORTRAN

· 1958 – ALGOL

· 1960 – LISP

· 1960 – COBOL

· 1962 – APL

· 1962 – SIMULA

· 1964 – BASIC

· 1964 – PL/I

· 1966 – ISWIM

· 1970 – Prolog

· 1972 – C

· 1975 – Pascal

· 1975 – Scheme

· 1977 – OPS5

· 1978 – CSP

· 1978 – FP

· 1980 – dBASE II

· 1983 – Smalltalk-80

· 1983 – Ada

· 1983 – Parlog

· 1984 – Standard ML

· 1986 – C++

· 1986 – CLP(R)

· 1986 – Eiffel

· 1988 – CLOS

· 1988 – Mathematica

· 1988 – Oberon

· 1989 – HTML

· 1990 – Haskell

Σχετική βιβλιογραφία:

[1] http://people.ku.edu/~nkinners/LangList/Extras/famous.htm

Λίστα με τις γνωστές γλώσσες, και πότε δημιουργήθηκαν (χρονολογική κατάταξη).

[2] Posters με χρονολογικά διαγράμματα της ιστορίας των Προγραμματιστικών Γλωσσών

http://www.levenez.com/lang/ – http://www.levenez.com/lang/lang.pdf
http://oreilly.com/news/languageposter_0504.html
http://www.levenez.com/windows/ – Σχετικά με γλώσσες για Windows μόνο
http://merd.sourceforge.net/pixel/language-study/diagram.html
http://www.epemag.com/zuse/Images/43ab.gif
http://www.digibarn.com/collections/posters/tongues/ComputerLanguagesChart-med.png

Χαρακτηριστικά των γλωσσών προγραμματισμού

Abstract data types (Αφηρημένοι τύποι δεδομένων): πρωτοσυναντήθηκαν στην Simula 67

Algebraic data types (Αλγεβρικοί τύποι δεδομένων): πρωτοσυναντήθηκαν στην Hope

Assignment operator overloading (Υπερφόρτωση τελεστή ανάθεσης): πρωτοσυναντήθηκε στην C++

BNF (Backus-Naur Form): χρησιμοποιήθηκε πρώτη φορά για το συντακτικό της Algol 60

Block nesting with scope: πρωτοσυναντήθηκε στην Algol 60

Chained comparisons (Αλυσιδωτές συγκρίσεις): πρωτοσυναντήθηκε στην BCPL

Class (Κλάσεις): πρωτοσυναντήθηκε στην Simula 67

Closure (Κλειστότητα): πρωτοσυναντήθηκε στην Lisp

Comments (Σχόλια στον κώδικα): πρωτοσυναντήθηκε στην Algol 58

Encapsulation (Εμφωλιασμός): άγνωστο

Exception handling (διαχείρηση exception): πρωτοσυναντήθηκε στην PL/I

Εxplicit typing (Αλλαγή τύπου):πρωτοσυναντήθηκε στην Algol 58

Garbage collection: πρωτοσυναντήθηκε στην Lisp

Heap allocation (Σωρός): πρωτοσυναντήθηκε στην Lisp

Hygienic macros: πρωτοσυναντήθηκε στην Scheme R4RS

Inheritance (Κληρονομικότητα): πρωτοσυναντήθηκε στην Simula 67

Lazy evaluation (): πρωτοσυναντήθηκε στην ISWIM (giving Haskell)

List comprehension (διαχείρηση λιστών): πρωτοσυναντήθηκε στην KRC (και μετά στην Haskell)

Macros: πρωτοσυναντήθηκε στην Cobol

Modules: πρωτοσυναντήθηκε στην Modula-2

Monads (Μονάδες): πρωτοσυναντήθηκε στην Haskell

Multiple selection (“case” statement): πρωτοσυναντήθηκε στην Algol W

Object-oriented Programming (Αντικειμενοστρεφής προγραμματισμός): Simula 67

Operator overloading (Υπερφόρτωση τελστών) πρωτοσυναντήθηκε στην Algol 68

Parametric Polymorphism (Παραμετρικός πολυμορφισμός): πρωτοσυναντήθηκε στην ML

Pass by name: πρωτοσυναντήθηκε στην Algol 60

Pass by value: πρωτοσυναντήθηκε στην Fortran

Pass by value/result: πρωτοσυναντήθηκε στην Algol W

Pattern matching (Αναγνώριση πρωτύπου): πρωτοσυναντήθηκε στην Hope (giving ML)

Pointer datatype (Δείκτες): πρωτοσυναντήθηκαν στην PL/I

References (Αναφορές): πρωτοσυναντήθηκαν στην Algol 68

Separate compilation (Μεταγλώττιση αρχείων ξεχοριστά): πρωτοσυναντήθηκε στην Fortran II

Stack allocation (Στοίβα): πρωτοσυναντήθηκε στην Algol 58

Stack dynamic variables (Δυναμικές εταβλητές στοίβας): πρωτοσυναντήθηκαν στην Algol 60

Static allocation (Στατικότητα): πρωτοσυναντήθηκε στην Fortran

Structures (records): πρωτοσυναντήθηκαν στην Cobol

Type classes (Κλάσεις τύπων): πρωτοσυναντήθηκαν στην Haskell

User-defined data types: πρωτοσυναντήθηκε στην Algol 68

Using C as portable assembler: πρωτοσυναντήθηκε στην C++ (Cfront)

Variable declaration anywhere in a block: πρωτοσυναντήθηκε στην Algol 68

Άρθρα πάνω σε θέματα της ιστορίας των Γλωσσών Προγραμματισμού

  1. Τίτλος paper: Programming languages: History and future
    http://portal.acm.org/citation.cfm?doid=361454.361485

Περίληψη στα αγγλικά (abstract): This paper discusses both the history and future of programming languages ( = higher level languages). Some of the difficulties in writing such a history are indicated. A key part of the paper is a tree showing the chronological development of languages and their interrelationships. Reasons for the proliferation of languages are given. The major languages are listed with the reasons for their importance. A section on chronology indicates the happenings of the significant previous time periods and the major topics of 1972. Key concepts other than specific languages are discussed.

  1. Τίτλος paper: Visual Programming Languages: A Survey

http://nitsan.org/~maratb/cs263/

Περίληψη στα αγγλικά (abstract): Over the past ten years, frequent increases in computer processing speed and graphics display capabilities have made possible a great deal of research and experimentation in the field of visual programming languages. A variety of different design methodologies have arisen from these research efforts, and numerous visual programming systems have been developed to address both specific application areas, such as user interface design and physical simulation, and more general programming tasks. We present a survey of the field of visual programming languages beginning with an historical overview of some of the pioneering efforts in the field. In addition, we present different classifications of visual programming languages, touch on implementation and design issues, and discuss efforts to formalize the theoretical basis for visual languages. We also discuss and examine a variety of the more important projects in the field over the last few years.

Σύνδεσμοι με θέματα της ιστορίας των Γλωσσών Προγραμματισμού

Μικρή περιλήψη της ιστορίας κάποιων Γλωσσών Προγραμματιμού:

Η ιστορία της ανάπτυξης των Γλωσσών Προγραμματισμού:

  • http://www.softpanorama.org/History/lang_history.shtml
    Μια σελίδα που αναλύει την θεωρία στην οποία βασίστηκε η ανάπτυξη των Γλωσσών αλγοριθμικού χαρακτήρα, και μετά υπάρχει ένα ιστορικό γεγονότων-σταθμών στην ιστορία τους.

Σημαντικά χαρακτηριστικά Γλωσσών Προγραμματισμού, πότε και που πρωτοσυναντήθηκαν:

Πηγές με γενικό ιστορικό χαρακτήρα και για συγκεκριμένες γλώσσες

  1. Πρώτο σετ διαφανειών από το μάθημα του κ. Π. Ροντογιάννη,

Αρχές Γλωσσών Προγραμματισμού“, μια σύντομη ιστορική αναδρομή:
http://www.di.uoa.gr/~prondo/LANGUAGES/ch1.pdf

  1. Χιουμοριστική “Ιστορία” των Γλωσσών Προγραμματισμού:
    http://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wrong.html
  2. Από που προέρχονται τα ονόματα των Γλωσσών Προγραμματισμού:
    http://c2.com/cgi/wiki?ProgrammingLanguageNamingPatterns
  3. Εξέλιξη χαρακτηριστικών γλωσσών προγραμματισμού ανά το χρόνο:
  4. Η ιστορία της γλώσσας C: http://www.livinginternet.com/i/iw_unix_c.htm
    Μια σύντομη περίληψη της ιστορίας της γνωστής γλώσσας C, από τον δημιουργό της, Dennis Richie.

PEEGEE  http://cgi.di.uoa.gr

Αρθρο απο: https://spacezilotes.wordpress.com/2012/11/17/%CE%AF-%CF%8E/

Δεν υπάρχουν σχόλια: