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

Αυτο 13.08.2019
Επισκόπηση προγράμματος Η έκδοση υπολογιστή του Microsoft Excel Viewer θα επιτρέψει...

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

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

Η πρώτη γλώσσα μηχανής επινοήθηκε το 1941 από τον Konrad Zuse, ο οποίος είναι ο εφευρέτης της Αναλυτικής Μηχανής. Λίγο αργότερα, το 1943, ο Howard Aiken δημιούργησε τη μηχανή Mark 1, ικανή να διαβάζει οδηγίες σε επίπεδο κώδικα μηχανής.

Στη δεκαετία του 1950 άρχισε η ζήτηση για ανάπτυξη λογισμικού και η γλώσσα μηχανής δεν μπορούσε να χειριστεί μεγάλες ποσότητες κώδικα, έτσι δημιουργήθηκε ένας νέος τρόπος επικοινωνίας με υπολογιστές. Η "Assembler" είναι η πρώτη μνημονική γλώσσα που αντικατέστησε τις οδηγίες μηχανής. Με τα χρόνια, ο κατάλογος των γλωσσών προγραμματισμού αυξάνεται μόνο, επειδή το πεδίο της τεχνολογίας υπολογιστών γίνεται ευρύτερο.

Ταξινόμηση γλωσσών προγραμματισμού

Αυτή τη στιγμή υπάρχουν περισσότερες από 300 γλώσσες προγραμματισμού. Κάθε ένα από αυτά έχει τα δικά του χαρακτηριστικά και είναι κατάλληλο για μια συγκεκριμένη εργασία. Όλες οι γλώσσες προγραμματισμού μπορούν να χωριστούν σε διάφορες ομάδες:

  • Προσανατολισμένο στις πτυχές (η κύρια ιδέα είναι ο διαχωρισμός της λειτουργικότητας για την αύξηση της αποτελεσματικότητας των λειτουργικών μονάδων λογισμικού).
  • Δομικό (βασισμένο στην ιδέα της δημιουργίας μιας ιεραρχικής δομής μεμονωμένων μπλοκ προγράμματος).
  • Λογική (με βάση τη θεωρία της συσκευής της μαθηματικής λογικής και τους κανόνες ανάλυσης).
  • Αντικειμενοστραφή (σε τέτοιου είδους προγραμματισμό δεν χρησιμοποιούνται πλέον αλγόριθμοι, αλλά αντικείμενα που ανήκουν σε μια συγκεκριμένη κλάση).
  • Multi-paradigm (συνδυάστε πολλά παραδείγματα και ο ίδιος ο προγραμματιστής αποφασίζει ποια γλώσσα θα χρησιμοποιήσει σε μια δεδομένη περίπτωση).
  • Λειτουργικά (τα κύρια στοιχεία είναι συναρτήσεις που αλλάζουν την τιμή τους ανάλογα με τα αποτελέσματα των υπολογισμών των δεδομένων προέλευσης).

Προγραμματισμός για αρχάριους

Πολλοί άνθρωποι αναρωτιούνται τι είναι ο προγραμματισμός; Ουσιαστικά είναι ένας τρόπος επικοινωνίας με υπολογιστή. Χάρη στις γλώσσες προγραμματισμού, μπορούμε να αναθέσουμε συγκεκριμένες εργασίες σε διάφορες συσκευές δημιουργώντας ειδικές εφαρμογές ή προγράμματα. Όταν μελετάτε αυτήν την επιστήμη στο αρχικό στάδιο, το πιο σημαντικό πράγμα είναι να επιλέξετε κατάλληλες (ενδιαφέρουσες για εσάς) γλώσσες προγραμματισμού. Η λίστα για αρχάριους είναι η παρακάτω:

  • Η Basic εφευρέθηκε το 1964, ανήκει στην οικογένεια των γλωσσών υψηλού επιπέδου και χρησιμοποιείται για τη συγγραφή προγραμμάτων εφαρμογών.
  • Η εκμάθηση της Python είναι αρκετά εύκολη λόγω της απλής, ευανάγνωστης σύνταξης, αλλά το πλεονέκτημα είναι ότι μπορεί να χρησιμοποιηθεί για τη δημιουργία κανονικών προγραμμάτων επιτραπέζιου υπολογιστή και εφαρμογών ιστού.
  • Η Pascal είναι μια από τις παλαιότερες γλώσσες (1969) που δημιουργήθηκε για τη διδασκαλία μαθητών. Η σύγχρονη τροποποίησή του είναι αυστηρά τυποποιημένη και δομημένη, αλλά το Pascal είναι μια εντελώς λογική γλώσσα που είναι κατανοητή σε διαισθητικό επίπεδο.

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

Οι αρχάριοι έχουν την ευκαιρία να επιταχύνουν την εκμάθηση του προγραμματισμού και των θεμελιωδών του, χάρη σε ειδικά εργαλεία. Ο κύριος βοηθός είναι το ενσωματωμένο περιβάλλον ανάπτυξης προγραμμάτων και εφαρμογών Visual Basic (η "Visual Basic" είναι επίσης μια γλώσσα προγραμματισμού που κληρονόμησε το στυλ της Βασικής γλώσσας της δεκαετίας του 1970).

Επίπεδα γλωσσών προγραμματισμού

Όλες οι επίσημες γλώσσες που προορίζονται για τη δημιουργία, την περιγραφή προγραμμάτων και αλγορίθμων για την επίλυση προβλημάτων σε υπολογιστές χωρίζονται σε δύο κύριες κατηγορίες: γλώσσες προγραμματισμού χαμηλού επιπέδου (η λίστα δίνεται παρακάτω) και υψηλού επιπέδου. Ας μιλήσουμε για καθένα από αυτά ξεχωριστά.

Οι γλώσσες χαμηλού επιπέδου έχουν σχεδιαστεί για να δημιουργούν οδηγίες μηχανής για επεξεργαστές. Το κύριο πλεονέκτημά τους είναι ότι χρησιμοποιούν μνημονικούς συμβολισμούς, δηλαδή, αντί για μια ακολουθία μηδενικών και μονάδων (από το δυαδικό σύστημα αριθμών), ο υπολογιστής θυμάται μια συντομευμένη λέξη με νόημα από την αγγλική γλώσσα. Οι πιο διάσημες γλώσσες χαμηλού επιπέδου είναι η "Assembler" (υπάρχουν αρκετοί υποτύποι αυτής της γλώσσας, καθένας από τους οποίους έχει πολλά κοινά, αλλά διαφέρει μόνο σε ένα σύνολο πρόσθετων οδηγιών και μακροεντολών), CIL (διαθέσιμο στο .Net πλατφόρμα) και JAVA Bytecode.

Γλώσσες προγραμματισμού υψηλού επιπέδου: λίστα

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

Η ακόλουθη λίστα γλωσσών προγραμματισμού: C ("C"), C# ("C-sharp"), "Fortran", "Pascal", Java ("Java") - είναι από τις πιο χρησιμοποιούμενες συντακτικές υψηλού επιπέδου. Έχει τις ακόλουθες ιδιότητες: αυτές οι γλώσσες λειτουργούν με πολύπλοκες δομές, υποστηρίζουν τύπους δεδομένων συμβολοσειρών και λειτουργίες με πληροφορίες εισόδου/εξόδου αρχείων και έχουν επίσης το πλεονέκτημα ότι είναι πολύ πιο εύκολο να εργαστείτε λόγω της αναγνωσιμότητας και της κατανοητής σύνταξης.

Οι πιο χρησιμοποιούμενες γλώσσες προγραμματισμού

Κατ 'αρχήν, μπορείτε να γράψετε ένα πρόγραμμα σε οποιαδήποτε γλώσσα. Το ερώτημα είναι: θα λειτουργήσει αποτελεσματικά και χωρίς αποτυχία; Γι' αυτό θα πρέπει να επιλέξετε τις πιο κατάλληλες γλώσσες προγραμματισμού για την επίλυση διαφόρων προβλημάτων. Η λίστα κατά δημοτικότητα μπορεί να περιγραφεί ως εξής:

  • Γλώσσες OOP: Java, C++, Python, PHP, VisualBasic και JavaScript.
  • ομάδα δομικών γλωσσών: Basic, Fortran και Pascal.
  • πολλαπλό παράδειγμα: C#, Delphi, Curry και Scala.

Πεδίο εφαρμογής προγραμμάτων και εφαρμογών

Η επιλογή της γλώσσας στην οποία είναι γραμμένο ένα συγκεκριμένο πρόγραμμα εξαρτάται σε μεγάλο βαθμό από το εύρος της εφαρμογής του. Έτσι, για παράδειγμα, για την εργασία με το ίδιο το υλικό του υπολογιστή (εγγραφή προγραμμάτων οδήγησης και υποστήριξη προγραμμάτων), η καλύτερη επιλογή θα ήταν η C ("C") ή η C++, οι οποίες περιλαμβάνονται στις κύριες γλώσσες προγραμματισμού (δείτε την παραπάνω λίστα) . Και για να αναπτύξετε εφαρμογές για κινητές συσκευές, συμπεριλαμβανομένων παιχνιδιών, θα πρέπει να επιλέξετε Java ή C# ("C-sharp").

Εάν δεν έχετε αποφασίσει ακόμα σε ποια κατεύθυνση θα εργαστείτε, σας συνιστούμε να ξεκινήσετε να σπουδάζετε με C ή C++. Έχουν πολύ σαφή σύνταξη και σαφή δομική διαίρεση σε κλάσεις και συναρτήσεις. Επιπλέον, γνωρίζοντας C ή C++, μπορείτε εύκολα να μάθετε οποιαδήποτε άλλη γλώσσα προγραμματισμού.

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

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

Αλλά η πραγματικότητα του προγραμματισμού είναι πολύ πιο περίπλοκη.

Προγραμματισμός σήμερα

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

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

Ορισμένες γλώσσες σχεδιάστηκαν για την επίλυση συγκεκριμένων προβλημάτων προγραμματισμού (όπως PHP και SASS), για διαχείριση ορισμένων τύπων συστημάτων () ή για εργασία σε συγκεκριμένο περιβάλλον ή πλατφόρμα (Java και JavaScript). Ορισμένες γλώσσες σχεδιάστηκαν ειδικά για να βοηθήσουν τους αρχάριους να μάθουν να προγραμματίζουν (κλασικά παραδείγματα είναι το BASIC και το Scratch).

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

Μια σχετικά πρόσφατη εξέλιξη περιλαμβάνει την έννοια του SOA (Service Oriented Architecture). αρχιτεκτονική προσανατολισμένη στις υπηρεσίες) και MVC (Model-View-Controller), καθώς και πλαίσια όπως το , που επιτρέπουν στους προγραμματιστές να εργάζονται εύκολα μέσα σε αυτά τα παραδείγματα.

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

Μια αυξανόμενη λίστα δημοφιλών γλωσσών προγραμματισμού, σημάνσεων και πρωτοκόλλων. Σύνδεσμοι για την περιγραφή καθενός από αυτούς:

Κωδικοποίηση ASCII

  • Η κωδικοποίηση χαρακτήρων είναι μια από τις θεμελιώδεις πτυχές των υπολογιστών και του Διαδικτύου. Το ASCII είναι το πρώτο ευρέως χρησιμοποιούμενο σύστημα κωδικοποίησης χαρακτήρων. Αντικαταστάθηκε από το UTF-8, αλλά το ASCII εξακολουθεί να είναι η βάση για τη συντριπτική πλειοψηφία των χαρακτήρων στο Διαδίκτυο σήμερα. Η κατανόηση αυτού είναι πολύ σημαντική για τους προγραμματιστές. Διαβάστε περισσότερα εδώ (αγγλικά):

ASP/ASP.NET

  • Το ASP είναι ένα αρκτικόλεξο του Active Server Pages. Είναι η πρώτη γλώσσα δέσμης ενεργειών από την πλευρά του διακομιστή για τον διακομιστή web Microsoft IIS. Το ASP έχει αντικατασταθεί από ένα πλαίσιο ανοιχτού κώδικα από την πλευρά του διακομιστή - ASP.NET. Περισσότερες λεπτομέρειες (Αγγλικά):

AutoLISP

  • Το AutoLISP είναι μια απλή, ελαφριά, ερμηνευμένη γλώσσα προγραμματισμού σχεδιασμένη ειδικά για σχεδιασμό λογισμικού με τη βοήθεια υπολογιστή. Διαβάστε σχετικά (Αγγλικά):

Awk

  • Η Awk είναι μια εξαιρετικά ισχυρή γλώσσα προγραμματισμού επεξεργασίας κειμένου που σας επιτρέπει να εξάγετε δεδομένα από ένα αρχείο ή άλλη πηγή και να τα εξάγετε σε οποιαδήποτε μορφή χρειάζεστε. Είναι ένα παλιό εργαλείο, αλλά εξακολουθεί να είναι τόσο χρήσιμο όσο ποτέ. Μάθετε περισσότερα (Αγγλικά): .

ΒΙΑΙΟ ΧΤΥΠΗΜΑ

  • Το Bash είναι η πιο συχνά χρησιμοποιούμενη διεπαφή γραμμής εντολών στον κόσμο του Unix. Αυτή είναι η προεπιλεγμένη διεπαφή που βασίζεται σε κείμενο τόσο για Linux όσο και για Mac OS X. Διαβάστε περισσότερα:

Common Lisp

  • Η Lisp είναι μια μάλλον μοναδική γλώσσα προγραμματισμού, ίσως η παλαιότερη γλώσσα που χρησιμοποιείται ακόμα και σήμερα. Αυτό είναι ιδιαίτερα σημαντικό στον τομέα της τεχνητής νοημοσύνης. Περισσότερες λεπτομέρειες (Αγγλικά):

ντο

  • Αν συμπεριλάβουμε εδώ δύο παράγωγα αυτής της γλώσσας, τότε μπορούμε να πούμε με ασφάλεια ότι καμία γλώσσα δεν ήταν πιο χρήσιμη και πιο επιδραστική από τη C. Αυτό είναι ιδιαίτερα σημαντικό για την ανάπτυξη λειτουργικών συστημάτων και άλλου λογισμικού. Πολλοί μεταγλωττιστές και διερμηνείς για άλλες γλώσσες είναι γραμμένοι σε C. Διαβάστε περισσότερα:

C++

  • Αρχικά ονομαζόμενη "C με κλάσεις", η C++ είναι από πολλές απόψεις απλώς ένας πιο προηγμένος διάδοχος της C (αν και η συνολική κατάσταση είναι πιο περίπλοκη). Η C++ σχεδιάστηκε για να προσθέσει ένα υψηλό επίπεδο στο πρότυπο προγραμματισμού C διατηρώντας παράλληλα δυνατότητες χειρισμού υλικού χαμηλού επιπέδου. Πολλές από αυτές τις προσθήκες έχουν προστεθεί στο C με τα χρόνια και οι γλώσσες μοιάζουν περισσότερο με δύο διάλεκτους της ίδιας γλώσσας. Περισσότερες λεπτομέρειες (Αγγλικά):

ΝΤΟ#

  • Χρησιμοποιείται ως κύρια γλώσσα για προγραμματισμό .NET, παρόμοια με τη C++, είναι μια επέκταση της γλώσσας προγραμματισμού C, αλλά με τη σημαντική προσθήκη αντικειμενοστρεφών δυνατοτήτων. Περισσότερες λεπτομέρειες (Αγγλικά):

CSS/CSS3

  • Η CSS, ή τα Cascading Style Sheets, δεν είναι επίσης γλώσσα προγραμματισμού, αλλά γλώσσα στυλ σελίδας - μια γλώσσα που παρέχει κανόνες στυλ και διάταξης σε έγγραφα και εφαρμογές. Είναι η κύρια γλώσσα στυλ που χρησιμοποιείται στο Διαδίκτυο. Περισσότερες λεπτομέρειες:

Emacs Lisp

  • Το Emacs ήταν από καιρό γνωστό ως ένας δημοφιλής και ισχυρός επεξεργαστής κειμένου. Αλλά η προσθήκη του Emacs Lisp σε αυτό το μετατρέπει σε ένα ολοκληρωμένο περιβάλλον ανάπτυξης για σχεδόν οποιαδήποτε γλώσσα προγραμματισμού. Περισσότερες λεπτομέρειες (Αγγλικά): .

ΦΑ#

  • Η F# είναι μια γλώσσα προγραμματισμού γενικού σκοπού. Σχεδιασμένο για να είναι εξαιρετικά αποτελεσματικό. Αρχικά ήταν μόνο γλώσσα της Microsoft, τώρα είναι γλώσσα ανοιχτού κώδικα και χρησιμοποιείται σε όλες τις πλατφόρμες. Περισσότερες λεπτομέρειες (Αγγλικά): .

ΦΟΡΤΑΝ

  • Το Fortran εμφανίστηκε για πρώτη φορά το 1957 και εξακολουθεί να χρησιμοποιείται για την επίλυση ορισμένων από τα πιο περίπλοκα προβλήματα στη σύγχρονη επιστήμη και τεχνολογία. Περισσότερες λεπτομέρειες (Αγγλικά):

ΕΜΠΡΟΣ

  • Οι εργασίες στο Forth ξεκίνησαν το 1968 και η γλώσσα χρησιμοποιείται συνήθως σε υλικό που δεν έχει παραδοσιακό λειτουργικό σύστημα. Χρησιμοποιείται επίσης ευρέως για τον έλεγχο εργαλειομηχανών. Περισσότερες λεπτομέρειες (Αγγλικά):

Haskell

  • Η Haskell είναι μια από τις πιο δημοφιλείς γλώσσες λειτουργικού προγραμματισμού, εκτός από το ότι είναι το πρωτότυπο για μια ντουζίνα άλλες γλώσσες. Χρησιμοποιείται ευρέως σε επιχειρηματικούς και ακαδημαϊκούς κύκλους και είναι μια εξαιρετική γλώσσα για να ξεκινήσετε όταν μαθαίνετε για λειτουργικό προγραμματισμό. Περισσότερες λεπτομέρειες (Αγγλικά):

HTML

  • Η HTML δεν είναι γλώσσα προγραμματισμού. Αυτή είναι μια γλώσσα σήμανσης - μια γλώσσα για την προσθήκη σημασιολογικών και στυλιστικών σχολιασμών στο περιεχόμενο. Είναι η κύρια γλώσσα για το περιεχόμενο Ιστού. Η γνώση του είναι απαραίτητη και υποχρεωτική για όλους τους web designers και web developers, καθώς και για όλους (συγγραφείς, συντάκτες) που παράγουν περιεχόμενο στο Διαδίκτυο. Περισσότερες λεπτομέρειες (Αγγλικά): και

IDL

  • Η IDL, ή η Διαδραστική Γλώσσα Δεδομένων, είναι μια γλώσσα προγραμματισμού που χρησιμοποιείται κυρίως για ανάλυση και οπτικοποίηση δεδομένων. Εξακολουθεί να χρησιμοποιείται ευρέως στην αεροδιαστημική και την αστρονομία. Περισσότερες λεπτομέρειες (Αγγλικά):

INTERCAL

  • Η INTERCAL είναι μια παρωδική γλώσσα υπολογιστή που αναπτύχθηκε στις αρχές της δεκαετίας του 1970. Δημιουργήθηκε ως αστείο για να δείξει πώς οι γλώσσες είναι τεχνικά πολύπλοκες και δύσκολες στην ανάγνωση. Αυτή είναι μια πραγματική γλώσσα που μπορείτε να κατεβάσετε και με την οποία μπορείτε ακόμη και να κάνετε κάτι. Υποτίθεται ότι πρέπει να είστε πολύ εξοικειωμένοι με αυτό για να το κάνετε αυτό - αλλά, πάλι, όχι πολύ καλά, επειδή ούτε η ίδια η INTERCAL δεν θα αρέσει. Περισσότερες λεπτομέρειες (Αγγλικά):

Ιάβα

  • Η Java είναι μια γλώσσα υψηλού επιπέδου που έχει σχεδιαστεί για χρήση στην εικονική μηχανή Java. Έχει πολύ λίγες εξωτερικές εξαρτήσεις και σχεδιάστηκε για να λειτουργεί σε οποιοδήποτε φυσικό μηχάνημα. Χρησιμοποιείται ευρέως στην αρχιτεκτονική δικτύου, καθώς και σε ενσωματωμένες συσκευές και άλλες υπολογιστικές εφαρμογές. Περισσότερες λεπτομέρειες (Αγγλικά): .

Javascript

  • Η JavaScript (που στην πραγματικότητα δεν σχετίζεται με την Java) είναι μια γλώσσα δέσμης ενεργειών που σχεδιάστηκε αρχικά για χρήση σε προγράμματα περιήγησης Ιστού. Επομένως, έχει ενσωματωμένη δυνατότητα εργασίας με το μοντέλο αντικειμένου εγγράφου (DOM), την αναπαράσταση στη μνήμη του περιεχομένου της ιστοσελίδας. Είναι η κύρια γλώσσα προγραμματισμού για την ανάπτυξη web front-end. Οδηγείται κυρίως σε συμβάντα και, χάρη στο Node.JS, έχει πρόσφατα αναγνωριστεί ως γλώσσα διακομιστή. Περισσότερες λεπτομέρειες (Αγγλικά): και. Και εδώ:

Ksh

  • Το Korn Shell (ksh) είναι μια διεπαφή γραμμής εντολών που χρησιμοποιείται στο Unix. Ήταν ένα πρώιμο κέλυφος, συμβατό με το τυπικό κέλυφος Bourne, αλλά με όλα τα όμορφα διαδραστικά χαρακτηριστικά του κελύφους C Περισσότερες λεπτομέρειες:

Προγραμματισμός Linux

  • Ο προγραμματισμός Linux περιλαμβάνει τα πάντα, από δέσμες ενεργειών κελύφους έως ανάπτυξη εφαρμογών έως ανάπτυξη πυρήνα. Περισσότερες λεπτομέρειες (Αγγλικά):

Λογότυπο

  • Το λογότυπο είναι μια από τις πρώτες γλώσσες για τη διδασκαλία του προγραμματισμού και εξακολουθεί να είναι ίσως η πιο διάσημη. Είναι διάσημος για τη χελώνα του, την οποία τα παιδιά κινούν με εντολές υπολογιστή. Ένας διασκεδαστικός τρόπος διδασκαλίας προγραμματισμού. Περισσότερες λεπτομέρειες (Αγγλικά):

M.L.

  • Η ML σχεδιάστηκε αρχικά ως γλώσσα μετα-προγραμματισμού: μια γλώσσα για τη δημιουργία άλλων γλωσσών. Όμως με την πάροδο του χρόνου, έγινε μια γλώσσα γενικής χρήσης, που χρησιμοποιείται ευρέως στην εκπαίδευση, τα μαθηματικά, τις επιστήμες, ακόμη και τα οικονομικά. Περισσότερες λεπτομέρειες (Αγγλικά): .

MPI

  • Το Message Passing Interface είναι ένα τυπικό πρωτόκολλο για την αποστολή μηνυμάτων μεταξύ διεργασιών ή προγραμμάτων. Έχει εφαρμοστεί σε πολλές γλώσσες προγραμματισμού, συμπεριλαμβανομένων των C, C++, Java και Python. Χάρη στο MPI, έγινε δυνατός ο παράλληλος υπολογισμός. Περισσότερες λεπτομέρειες (Αγγλικά):

Προγραμματισμός δικτύου με υποδοχές internet

Στόχος-Γ

  • Μια άλλη έκδοση της C, που δημιουργήθηκε τη δεκαετία του 1980 για να παρέχει μια πλήρως αντικειμενοστρεφή υλοποίηση της C. Η κύρια χρήση της γλώσσας σήμερα είναι σε λειτουργικά συστήματα Mac OSX και iOS. Μέχρι πρόσφατα, οι εφαρμογές iOS έπρεπε να γράφονται σε Objective-C, αλλά τώρα μπορείτε να γράφετε και στο Swift. Περισσότερες λεπτομέρειες (Αγγλικά):

OCaml

  • Η OCaml είναι μια αντικειμενοστραφή λειτουργική γλώσσα υπολογιστή. Στην παράδοση της ML, χρησιμοποιείται πολύ για τη σύνταξη άλλων γλωσσών προγραμματισμού και πλαισίων. Περισσότερες λεπτομέρειες (Αγγλικά): .

Ανάπτυξη λειτουργικού συστήματος

  • Το Everest των εργασιών προγραμματισμού θεωρείται η ανάπτυξη ενός λειτουργικού συστήματος. Αν θέλετε να αποδείξετε στον εαυτό σας ότι μπορείτε να γράψετε οτιδήποτε, τότε δεν υπάρχει τίποτα καλύτερο από το να γράψετε τον πυρήνα του λειτουργικού σας συστήματος και τα σχετικά εργαλεία του, αλλά προειδοποιήστε: αυτό είναι ένα ταξίδι μόνο για τους γενναίους και αληθινούς προγραμματιστές! Περισσότερες λεπτομέρειες (Αγγλικά): .

Perl

  • Ένα πολύ χρήσιμο εργαλείο για σχεδόν κάθε προγραμματιστή. Ως γλώσσα διερμηνείας, δεν χρειάζεται να συνταχθεί, που μερικές φορές αναφέρεται ως «Ελβετικό μαχαίρι» των γλωσσών γραφής. Περισσότερες λεπτομέρειες (Αγγλικά):

ΠΡΟΛΟΓ

  • Η Prolog είναι μια λογική γλώσσα προγραμματισμού σχεδιασμένη για επεξεργασία φυσικής γλώσσας. Περισσότερες λεπτομέρειες (Αγγλικά):

Καθαρά Δεδομένα

  • Το Pure Data είναι μια μοναδική οπτική γλώσσα προγραμματισμού. Δημιουργήθηκε ειδικά για να επιτρέπει στους χρήστες να δημιουργούν έργα βίντεο, ήχου και γραφικών. Περισσότερες λεπτομέρειες (Αγγλικά): .

Πύθων

  • Η Python είναι μια γλώσσα προγραμματισμού υψηλού επιπέδου. Μια ερμηνευμένη (μη μεταγλωττισμένη) γλώσσα, γνωστή και ως «γλώσσα σεναρίου». Χρησιμοποιείται κυρίως ως εργαλείο για την εκτέλεση εξειδικευμένων εργασιών προγραμματισμού, όπως εργασίες αυτοματισμού και ανάλυσης δεδομένων. Διαθέτει ένα ισχυρό σύνολο εργαλείων για μαθηματικούς και επιστημονικούς υπολογισμούς και χρησιμοποιείται συχνά από ερευνητές. Περισσότερες λεπτομέρειες (Αγγλικά):

Ruby on Rails

  • Το Ruby on Rails είναι ένα πλαίσιο ανάπτυξης ιστού για τη γλώσσα προγραμματισμού Ruby. Παρέχει αρχιτεκτονική MVC (Model View Controller), ένα επίπεδο αφαίρεσης βάσης δεδομένων και πολλά εργαλεία για την επιτάχυνση της διαδικασίας προγραμματισμού εφαρμογών Ιστού. Πολύ δημοφιλές για γρήγορη ανάπτυξη διαδικτυακών εφαρμογών. Περισσότερες λεπτομέρειες (Αγγλικά):

SAS

  • Η SAS είναι μια εξειδικευμένη γλώσσα σχεδιασμένη για την ανάλυση στατιστικών δεδομένων. Χρησιμοποιείται ευρέως στην κυβέρνηση, τον ακαδημαϊκό κόσμο και τις επιχειρήσεις. Για άτομα με πολλά δεδομένα, η SAS είναι η προφανής επιλογή. Περισσότερες λεπτομέρειες (Αγγλικά): .

Σκάλα

  • Η Scala είναι μια σχετικά νέα γλώσσα - λίγο πολύ η νεότερη και καλύτερη Java. Είναι μια εξαιρετική γλώσσα για προγραμματιστές Java που θέλουν να είναι πιο αποτελεσματικοί ή για άτομα που μόλις αρχίζουν να μαθαίνουν προγραμματισμό και θέλουν να μάθουν μια ισχυρή γλώσσα που δεν θα τους περιορίσει στο μέλλον. Περισσότερες λεπτομέρειες (Αγγλικά): .

Σχέδιο

  • Το Scheme είναι μια παλιά γλώσσα, αλλά εξακολουθεί να χρησιμοποιείται για τη διδασκαλία προγραμματισμού και πιο προηγμένων μαθημάτων επιστήμης υπολογιστών. Βασισμένο κυρίως στη Lisp και εν μέρει στην ALGOL. Περισσότερες λεπτομέρειες (Αγγλικά): .

Γρατσουνιά

  • Η γλώσσα προγραμματισμού Scratch δημιουργήθηκε ειδικά για τη διδασκαλία προγραμματισμού σε παιδιά ηλικίας 8 έως 16 ετών. Το Scratch είναι εύκολο και επιτρέπει στα παιδιά να μάθουν τα βασικά της λογικής προγραμματισμού με διασκεδαστικό τρόπο. Περισσότερες λεπτομέρειες (Αγγλικά):

Simula

  • Η Simula είναι μια ιστορικά σημαντική γλώσσα γιατί ήταν η πρώτη γλώσσα που εισήγαγε τις έννοιες που έγιναν η βάση για αντικειμενοστραφή προγραμματισμό. Περισσότερες λεπτομέρειες (Αγγλικά): .

ΧΑΜΟΓΕΛΟ

  • Το SMIL (Synchronized Multimedia Integration Language) είναι ένα εργαλείο για εκείνους τους ανθρώπους που θέλουν να δημιουργούν και να διανέμουν παρουσιάσεις. Ιδιαίτερα χρήσιμο εάν θέλετε να δημιουργήσετε παρουσιάσεις που πρέπει να ενημερώνονται από καιρό σε καιρό. Περισσότερες λεπτομέρειες (Αγγλικά):

SQL

  • Η SQL (Structured Query Language) είναι η γλώσσα που χρησιμοποιείται για την επικοινωνία με τα Συστήματα Διαχείρισης Σχεσιακών Βάσεων Δεδομένων (RDBMS). Η SQL επιτρέπει στον προγραμματιστή να δημιουργήσει δομές δεδομένων, να εισαγάγει και να επεξεργαστεί δεδομένα και να υποβάλει ερώτημα. Περισσότερες λεπτομέρειες (Αγγλικά):

Stata

  • Το Stata είναι ένα περιβάλλον ανάπτυξης και μια γλώσσα προγραμματισμού για την επίλυση σοβαρών στατιστικών προβλημάτων. Και παρόλο που δημιουργήθηκε πριν από πολύ καιρό, εξακολουθεί να χρησιμοποιείται ευρέως. Εάν ασχολείστε με τη στατιστική εργασία, το Stata είναι ένα εξαιρετικό εργαλείο. Περισσότερες λεπτομέρειες (Αγγλικά):

Ταχύς

  • Η Swift είναι μια νέα γλώσσα προγραμματισμού που αναπτύχθηκε από την Apple για iOS, OS X, watchOS, tvOS και Linux. Αυτή είναι η γλώσσα του μέλλοντος για τους προγραμματιστές προγραμμάτων και εφαρμογών για συσκευές Apple. Περισσότερες λεπτομέρειες (Αγγλικά):

S-PLUS

  • Το S-PLUS είναι μια εμπορική έκδοση της ισχυρής γλώσσας προγραμματισμού S που έχει σχεδιαστεί για την εκτέλεση στατιστικών αναλύσεων. Το έργο GNU έχει τη δική του έκδοση του S, που ονομάζεται R. Όλοι οι απαραίτητοι πόροι για το S με έμφαση στο S-PLUS:

Προγραμματισμός UNIX

  • Το εύρος του προγραμματισμού στο Unix είναι μεγάλο. Καλύπτει το εύρος από τα σενάρια διαχείρισης έως τον κώδικα που βασίζεται σε κείμενο έως την ανάπτυξη του παραθύρου X. Περισσότερες λεπτομέρειες (Αγγλικά):

XML

  • Η XML είναι μια καλά δομημένη γλώσσα σήμανσης που έχει σχεδιαστεί για να είναι αναγνώσιμη τόσο από τον άνθρωπο όσο και από τη μηχανή. Περισσότερες λεπτομέρειες (Αγγλικά):

Το μάθημα προετοίμασε: Akulov Ivan

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

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

Οι γλώσσες προγραμματισμού μπορεί να είναι:

  • απλός,
  • σύνθετο και
  • ακατανόητο (για παράδειγμα, γραφικό).

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

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

Μηδενική γενιά

  • (ηλεκτρο)
  • προγραμματίζονται από τη δομή της δικής τους συσκευής
  • εξαιρετικά εξειδικευμένο,
  • Οι επιλογές προγραμματισμού είναι περιορισμένες.

Ζακάρ αργαλειός

Ένα παράδειγμα τέτοιων μηχανών είναι μια μηχανή ύφανσης ζακάρ με προγραμματιζόμενη συσκευή. Κατασκευάστηκε το 1804 από τον Γάλλο Joseph Marie Jacquard. Παρεμπιπτόντως, προς τιμήν του, το μοτίβο, διακοσμητικό ύφασμα ονομάζεται ζακάρ ή ζακάρ.

Χρησιμοποιώντας το μηχάνημα, ήταν δυνατή η εύκολη και μαζική παραγωγή κεντήματος σε ύφασμα χρησιμοποιώντας διάτρητες κάρτες, όπως φαίνεται στο παρακάτω σχήμα:

Ρύζι. 1. Κάρτες διάτρησης για τον αργαλειό Jacquard

Οι κάρτες διάτρησης προγραμματίστηκαν με μια σειρά ενεργειών ώστε οι μηχανές να αναπαράγουν ένα σχέδιο σε ύφασμα.

Μηχανή Babbage

Διαδίκτυο και Ιστός

Έχουν εμφανιστεί εξειδικευμένες γλώσσες:

  • JavaScript.

Πολλοί ιστότοποι είναι γραμμένοι χρησιμοποιώντας PHP και JavaScript.

Ορισμένες προϋπάρχουσες γλώσσες, με την έλευση του Διαδικτύου και του Ιστού, βρήκαν νέες θέσεις και προσανατολίστηκαν στον ιστό:

  • Ρουμπίνι,
  • Pynton,
  • Ιάβα.

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

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

Κύκλος ζωής μιας γλώσσας προγραμματισμού:

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

Στον σύγχρονο κόσμο, το μεγαλύτερο μέρος του λογισμικού είναι γραμμένο σε 10-15 γλώσσες, αν και σε όλο το διάστημα που γνωρίζουμε, έχουν δημιουργηθεί περισσότερες από εκατοντάδες γλώσσες προγραμματισμού. Υπάρχουν 300 ή 400 γλώσσες επίσημα καταχωρημένες.

Τι είναι μια γλώσσα προγραμματισμού

Η γλώσσα είναι

  • σύνταξη (κανόνες για τη σύνταξη προγραμμάτων),
  • σημασιολογία (η συμπεριφορά των στοιχείων που περιλαμβάνονται στους κανόνες γραφής και ενσωματώνονται στη γλώσσα),
  • runtime (runtime περιβάλλον).

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

Σύνταξη χρησιμοποιώντας το Lisp ως παράδειγμα

Μία από τις απλούστερες γλώσσες προγραμματισμού που έχουν επίσημη γραμματική είναι η γλώσσα λίστας LISP.

Ρύζι. 10. Πρόγραμμα LISP

Το LISP είναι μια πολύ παλιά γλώσσα που παράγει λίστες. Η γραμματική μιας τέτοιας γλώσσας είναι μια γραμματική από λίστες, που διαβάζονται από πάνω προς τα κάτω.

  • Στο Lisp υπάρχουν εκφράσεις: μπορεί να υπάρχει ένα άτομο ή μια λίστα.
  • Το άτομο είναι ένας αριθμός ή σύμβολο,
  • αριθμός – αριθμός, δηλαδή με ψηφίο συν ή πλην, τουλάχιστον ένα,
  • σύμβολο – αυτά είναι γράμματα, όσες φορές θέλετε, μπορείτε ακόμη και πολλές φορές,
  • λίστα – λίστα, εκφράσεις σε αγκύλες περισσότερες από μία φορές.

Ένα πρόγραμμα Lisp είναι μια λίστα λιστών. Δεν υπάρχουν σημεία στίξης στο Lisp, αλλά υπάρχουν παρενθέσεις. Μπορεί να υπάρχουν τόσο μεγάλα προγράμματα στο Lisp, όπου στο τέλος υπάρχουν 2-3 φύλλα, που αποτελούνται μόνο από αγκύλες κλεισίματος.

Ο απλούστερος διερμηνέας Lisp παίρνει μόνο 19 γραμμές! Καμία άλλη γλώσσα δεν έχει αυτή την πολυτέλεια.

Σημασιολογία

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

Οι επιλογές για την αναπαράσταση της σημασιολογίας είναι αρκετά περιορισμένες.

Η σημασιολογία θα μπορούσε να είναι:

  • περιγράφεται σε φυσική, ανθρώπινη γλώσσα. Πολλές γλώσσες μπορούν να περιγραφούν μόνο με αυτόν τον τρόπο. Στην πραγματικότητα, αυτή είναι η κύρια περίπτωση όταν υπάρχει απλώς ένα έγγραφο όπου περιγράφεται στα ρωσικά ή στα αγγλικά ότι το τάδε πράγμα λειτουργεί με τον άλλον τρόπο, μια ομάδα κάνει αυτό, μια άλλη κάνει τέτοια και τέτοια κ.λπ. ;
  • καθορίζεται επίσημα (σε εξειδικευμένες γλώσσες, για παράδειγμα, για ορισμένους υπολογισμούς, η συμπεριφορά των στοιχείων μπορεί να περιγραφεί επίσημα).
  • ορίζεται από την αρχική υλοποίηση (που χρησιμοποιείται σπάνια, αλλά αυτή είναι η «τελευταία ελπίδα» για μια περιγραφή όταν η σημασιολογία είναι πολύ περίπλοκη ή όχι πολύ σημαντική).
  • περιγράφεται από ένα σύνολο δοκιμών (περιπτώσεων), δηλαδή, ότι πρέπει να λειτουργεί με αυτόν τον τρόπο και αυτό πρέπει να λειτουργεί με αυτόν τον τρόπο.

Η σημασιολογία χωρίζεται σε δύο μέρη:

  • στατικός,
  • δυναμικός.

Στατική σημασιολογία

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

Δυναμική ή μετωπική σημασιολογία χρόνου εκτέλεσης

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

Σύστημα τύπων δεδομένων σε γλώσσες προγραμματισμού

Ένα σημαντικό μέρος της σημασιολογίας είναι το σύστημα τύπων - ένα σύνολο κανόνων και εκφράσεων για μεθόδους που είναι γραμμένες στην ιδεολογία της γλώσσας και πώς αλληλεπιδρούν μεταξύ τους.

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

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

Σύστημα τύπου δεδομένων:

  • δακτυλογραφημένη ή μη πληκτρολογημένη γλώσσα
  • στατική ή δυναμική πληκτρολόγηση
  • ισχυρή ή αδύναμη πληκτρολόγηση

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

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

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

Με την αδύναμη πληκτρολόγηση, ο τύπος ενός αντικειμένου μπορεί να διαφέρει ανάλογα με το περιβάλλον και το τι κάνετε με αυτό.

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

Το επόμενο σημαντικό χαρακτηριστικό της γλώσσας είναι

Παράδειγμα γλώσσας προγραμματισμού

  • από ελληνικά - πρότυπο, παράδειγμα, δείγμα;
  • αυτό είναι ένα σύστημα ιδεών και εννοιών που καθορίζουν το στυλ γραφής προγραμμάτων σε αυτήν τη γλώσσα - τον τρόπο με τον οποίο η γλώσσα περιλαμβάνει τη σύνταξη προγραμμάτων σε αυτήν (wiki).
  • η γλώσσα «ευνοεί» ένα ή περισσότερα παραδείγματα (πολυπαράδειγμα).

Κύρια Παραδείγματα

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

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

Ένα άλλο σημαντικό μέρος μιας γλώσσας που πρέπει να λάβετε υπόψη όταν χρησιμοποιείτε μια γλώσσα είναι το Runtime - πώς εκτελείται η γλώσσα.

Runtime - εκτέλεση προγράμματος

Το πρόγραμμα μπορεί να εκτελεστεί με διάφορους τρόπους:

  1. Ο απλούστερος και πιο αφελής τρόπος εκτέλεσης ενός προγράμματος είναι η ερμηνεία - η ανάγνωση του πηγαίου κώδικα κατά την εκκίνηση. Έτσι λειτουργούν οι ελαφριές γλώσσες σεναρίου. Ο ίδιος ο προγραμματιστής εργάζεται επίσης: όταν έχει γράψει ένα πρόγραμμα, κοιτάζει με τα μάτια του το δικό του πρόγραμμα και καταλαβαίνει πώς θα λειτουργήσει το πρόγραμμά του και τι να κάνει.
  2. Ένας συνηθισμένος τρόπος εκτέλεσης προγραμμάτων είναι η μεταγλώττιση τους σε κώδικα μηχανής, ένα ξεχωριστό βήμα πριν από την εκτέλεσή τους. Υπάρχει ένα ξεχωριστό εργαλείο - ένας μεταγλωττιστής, όπου διαβάζονται οι πηγές προγραμμάτων, κάτι γίνεται με αυτές, μετατρέποντάς τους σε κώδικες μηχανής που είναι κατανοητοί στο τρέχον σύστημα. Στη συνέχεια, αυτός ο κώδικας εκτελείται απευθείας από το υλικό.
  3. Η υβριδική μέθοδος είναι η μεταγλώττιση και εκτέλεση byte σε μια εικονική μηχανή. Ο μεταγλωττιστής διαβάζει τον πηγαίο κώδικα και στη συνέχεια παράγει bytecode που εκτελείται στην εικονική μηχανή.

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

Εκπρόσωποι γλωσσών

Γλώσσα Γ

– ένα από τα πιο δημοφιλή, ένα από τα πιο σημαντικά όσον αφορά τον κώδικα που είναι φυσικά γραμμένο σε αυτό, πρακτικά είναι «τα πάντα μας».

Δημιουργήθηκε το 1972, οι δημιουργοί είναι ο Dennis Ritchie και οι συνεργάτες του. Ο D. Ritchie δημιούργησε επίσης το σύστημα Linux και πολλά άλλα χρήσιμα πράγματα.

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

Παρεμπιπτόντως, το C εξακολουθεί να ισχύει σήμερα, χρησιμοποιείται για:

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

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

Τα προγράμματα C είναι πολύ συμπαγή. Δεν είναι πολύ μεγαλύτερα από ό,τι αν είχαν γραφτεί παρόμοια προγράμματα στη Συνέλευση. Επιπλέον, η ανάπτυξη στο C είναι πολύ πιο γρήγορη από ό,τι στο Assembly.

Επομένως, το C χρησιμοποιείται πλέον για εργασίες όπου απαιτείται απόδοση, η διαχείριση μνήμης είναι πολύ σημαντική και το συμπαγές μέγεθος του ίδιου του προγράμματος έχει μεγάλη σημασία. Εάν έχετε έναν μικρό μικροελεγκτή που είναι ενσωματωμένος σε κάποια συσκευή, τότε το πρόγραμμα για αυτόν πιθανότατα θα γραφτεί είτε σε Assembly είτε σε C.

Ρύζι. 11. Παράδειγμα απλού προγράμματος C.

Ιάβα

  • Δημιουργήθηκε το 1995,
  • δημιουργοί: James Gosling και Sun Microsystems (ο Gosling εργάστηκε για αυτήν την εταιρεία).
  • Αντικειμενοστραφή, επιτακτική (το C είναι επιτακτική, αλλά ΟΧΙ αντικειμενοστραφή),
  • αυστηρά και στατικά δακτυλογραφημένα,
  • byte-μεταγλωττισμένο με εικονική μηχανή,
  • χωρίς πρόσβαση στη μνήμη, αυτόματη συλλογή σκουπιδιών (το τελευταίο λειτουργεί καλά εάν υπάρχει το ένα τρίτο ή το ένα τέταρτο της ελεύθερης μνήμης).

Στη δεκαετία του '90, η JAVA κέρδισε μεγάλη δημοτικότητα ως γλώσσα πολλαπλών πλατφορμών. Αφού γράψετε μια εικονική μηχανή για μια συγκεκριμένη πλατφόρμα, ας πούμε για Windows ή Linux ή Mac, μπορείτε να εκτελέσετε οποιαδήποτε προγράμματα JAVA σε αυτήν χωρίς νέα μεταγλώττιση. Ως εκ τούτου, η γλώσσα ήταν δημοφιλής στην εποχή του Ιστού, όταν υπήρχαν διαφορετικές πλατφόρμες (διαφορετικές εκδόσεις Windows, διαφορετικοί Mac). Τα προγράμματα JAVA λειτούργησαν γρήγορα και αρκετά καλά σε διαφορετικές πλατφόρμες.

Χρησιμοποιείται για:

  • προγραμματισμός εφαρμογών, συμπεριλαμβανομένου του προγραμματισμού Ιστού,
  • ενσωματωμένα συστήματα (εάν το C χρησιμοποιείται για μικροελεγκτές, τότε το JAVA χρησιμοποιείται για κινητά τηλέφωνα, τερματικά κ.λπ.),
  • συστήματα υψηλής φόρτισης με μεγάλο αριθμό χρηστών (τραπεζικά προγράμματα, συστήματα ελέγχου εναέριας κυκλοφορίας κ.λπ.).

Πρέπει να γίνει διάκριση μεταξύ των προδιαγραφών γλώσσας Java και των διαφόρων υλοποιήσεων JVM:

  • Sun JDK (από τη Sun, τώρα Oracle),
  • IBM JDK (πωλείται έναντι χρημάτων),
  • OpenJDK (εντελώς δωρεάν)
  • και τα λοιπά.

Ρύζι. 12. Ένα παράδειγμα απλού προγράμματος σε JAVA.

Όπως φαίνεται στο Σχ. 12, πρέπει να γράψετε πολλά γράμματα για να εκτελέσετε απλές ενέργειες. Η Java αποκαλείται συχνά η νέα Cobol επειδή περιέχει τις ίδιες αρνητικές ιδιότητες που κάποτε έκαναν την Cobol κακή γλώσσα.

Ωστόσο, η JAVA είναι πολύ δημοφιλής, συγκεκριμένα, το τμήμα πελάτη του λειτουργικού συστήματος είναι γραμμένο σε αυτό.

Ψελλίζω

  • Πραγματικά τελειώνει Lis t Π rocessor (LisP);
  • δημιουργήθηκε το 1958.
  • δημιουργοί: John McCarthy;
  • μια καθαρή λειτουργική γλώσσα, παρά τη μάλλον περίεργη σύνταξη.
  • Δακτυλογραφημένο έντονα και δυναμικά.
  • γενικά ερμηνεύσιμο?
  • χωρίς πρόσβαση στη μνήμη, αυτόματη συλλογή σκουπιδιών, η οποία πέφτει στον διερμηνέα και όχι στην εικονική μηχανή.

Χρησιμοποιείται για:

  • επιστημονικός προγραμματισμός και έρευνα·
  • τεχνητή νοημοσύνη – Το Lisp δημιουργήθηκε στην αρχή με αναζήτηση με νοημοσύνη. Στα τέλη της δεκαετίας του 1950 και στις αρχές της δεκαετίας του 1960, υπήρχε μια έντονη αίσθηση στους επιστημονικούς κύκλους ότι η τεχνητή νοημοσύνη επρόκειτο να δημιουργηθεί. Τότε πίστευαν ότι τα βασικά χαρακτηριστικά της τεχνητής νοημοσύνης θα ήταν η ικανότητα να λειτουργεί με φυσική γλώσσα, κείμενο, ανάγνωση, ομιλία και να κάνει κάποια έξυπνα πράγματα. Το Lisp δημιουργήθηκε για να επεξεργάζεται σημασιολογικά δεδομένα από κείμενο και σας επιτρέπει να κάνετε τέτοια πράγματα καλά.
  • οτιδήποτε, αλλά, κατά κανόνα, δεν χρησιμοποιείται πολύ αποτελεσματικά.

Η γλώσσα Lisp, που αναπτύχθηκε το 1958, έχει υποστεί πολλές αλλαγές.

Έχει πολλές υλοποιήσεις και διαλέκτους:

  • Το CommonLisp (δημιουργήθηκε τη δεκαετία του 1970) είναι μια κλασική υλοποίηση που θεωρείται η κύρια.
  • Το Scheme (σχήμα) είναι μια απλοποιημένη διάλεκτος που απορρίπτει ορισμένα πράγματα από το CommonLisp και το κάνει πιο εύκολο.
  • Το Clojure είναι μια διάλεκτος του Lisp ως προς τη γλώσσα, αλλά τρέχει πάνω από μια μηχανή JAVA, δηλαδή μεταγλωττίζεται σε bytecode και εκτελείται σαν να ήταν πρόγραμμα JAVA.

Ρύζι. 13. Πρόγραμμα LISP: ταξινόμηση με φυσαλίδες

Πύθων

  • Πήρε το όνομά του από τη βρετανική εκπομπή του 1970 Monty Pynton's Flying Circus (τα αστεία είναι παλιά, αλλά αστεία)
  • δημιουργήθηκε το 1991
  • δημιουργός – Ολλανδός Guido van Rossum
  • γλώσσα πολλαπλών παραδειγμάτων, αντικειμενοστραφή, επιτακτική, λειτουργική
  • δυνατά και δυναμικά δακτυλογραφημένα
  • ερμηνευμένη, μεταγλώττιση byte με εικονική μηχανή (ανάλογα με την υλοποίηση)

Χρησιμοποιείται για:

  • προγραμματισμός σεναρίων
  • προγραμματισμός Ιστού
  • επιστημονικός προγραμματισμός (υπάρχουν μεγάλα, ισχυρά πακέτα για εργασία με μοντελοποίηση, πιθανότητες, στατιστικές και άλλους τομείς που συνδυάζουν την εμπειρία που αποκτήθηκε σε άλλους τομείς)

Η Python είναι μια προδιαγραφή γλώσσας. Υπάρχουν πολλές βασικές υλοποιήσεις:

  • CPython – κύρια (αναφορά)
  • Jython - στην κορυφή του JVM
  • PyPy – Python σε Python (Το "Python in Python" λειτουργεί πιο γρήγορα και καλύτερα από το CPython και το Jython)

Ρύζι. 14. Πρόγραμμα Python: Ταξινόμηση με φυσαλίδες

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

Επιλογή γλώσσας για την εργασία

Πώς να επιλέξετε μια γλώσσα για μια εργασία όταν ξέρετε τι πρέπει να κάνετε, αλλά δεν ξέρετε σε τι;

Σημαντική συμβουλή: χρησιμοποιήστε αυτό που ξέρετε να προγραμματίζετε. Αυτό είναι πολύ καλύτερο από το να χρησιμοποιείτε κάτι που ΔΕΝ ξέρετε πώς να προγραμματίσετε.

Οικοσύστημα

Η γλώσσα που θέλετε να μάθετε δεν πρέπει να είναι μια «γυμνή» γλώσσα, θα πρέπει να έχει ένα οικοσύστημα που περιλαμβάνει:

  • εργαλεία ανάπτυξης (φιλικό προς το χρήστη IDE)
  • έτοιμες βιβλιοθήκες και πλαίσια
  • εργαλεία δοκιμής για την εκτέλεση δοκιμαστικών περιπτώσεων: πλαίσια και εργαλεία δοκιμών
  • συστήματα συσκευασίας και ανάπτυξης, ώστε ο γραπτός κώδικας να μπορεί να συσκευαστεί και να αναρτηθεί κάπου, ώστε να μπορούν να τον χρησιμοποιήσουν εύκολα άλλοι. Η γλώσσα C δεν έχει αυτό το χαρακτηριστικό, αλλά οι γλώσσες Ruby και Python έχουν.
  • κοινότητα. Δεν χρειάζεται να χρησιμοποιείτε νεκρές γλώσσες, όσο cool κι αν είναι. Αν δεν έχετε κανέναν να ρωτήσετε, θα παραμείνετε σε εντελώς αδιέξοδο. Πιστεύεται ότι ορισμένες κοινότητες είναι πιο φιλικές, άλλες λιγότερο. Για παράδειγμα, η κοινότητα Ruby είναι εξαιρετική, αλλά η κοινότητα Java είναι τρομερή - δεν χρειάζεται καν να ρωτήσετε τίποτα εκεί.

Δημοτικότητα

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

Όσο πιο δημοφιλής είναι μια γλώσσα, τόσο περισσότερες βιβλιοθήκες, κοινότητες, πλαίσια και άλλα πράγματα έχει που μεγαλώνουν μόνα τους από ψηλά.

Ποσοστό μάθησης

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

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

Είναι αδύνατο να μάθει κανείς πλήρως την C++, γιατί υπάρχουν πολύ περίπλοκα πράγματα με τη δημιουργία κώδικα.

Κοινότης των γλωσσών

Συγκεκριμένες γλώσσες είναι καλύτερα κατάλληλες για την επίλυση ορισμένων εξειδικευμένων προβλημάτων.

Παράδειγμα 1: μια διαδικτυακή εφαρμογή που

  • αλληλεπιδρά με τη βάση δεδομένων
  • εσωτερική υπηρεσία στην εταιρεία
  • Χρειαζόμαστε γρήγορη ανάπτυξη, γιατί το αφεντικό το ζητάει πραγματικά.

Για μια τέτοια εργασία, πιθανότατα θα είναι κατάλληλα η Python ή η Ruby. Δεν χρειάζεται να το κάνετε αυτό στην JAVA

Παράδειγμα 2: Σύστημα χρέωσης παρόχου κινητής τηλεφωνίας

  • χιλιάδες πράξεις ανά δευτερόλεπτο, πολλές διαφορετικές πληρωμές και μεταφορές
  • υψηλή αξιοπιστία και ανοχή σε σφάλματα
  • ευελιξία στη διαμόρφωση, διάγνωση προβλημάτων

Σε αυτήν την περίπτωση, η επιλογή μας είναι Java, C++, Erlang - πλούσιες γλώσσες με πλούσια εργαλεία.

Παράδειγμα 3: Κωδικός υπολογιστή οχήματος για δορυφόρο

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

Η επιλογή μας είναι γλώσσες που μοιάζουν με C και C (ακόμη και assembler), επειδή υπάρχουν πολύ λίγοι πόροι και αυτές οι απαιτήσεις πρέπει να πληρούνται.

Το άρθρο βασίζεται στο βίντεο:

Πώς να επιλέξετε τη σωστή γλώσσα προγραμματισμού - Ivan Kalinin

Το βίντεο γυρίστηκε τον Δεκέμβριο του 2014, ωστόσο, όλες οι πληροφορίες είναι σχετικές και δεν έχουν παραγραφή. Πολλά υλικά από την προοπτική της σημερινής πραγματικότητας έχουν αναμφισβήτητο ενδιαφέρον, για παράδειγμα, ότι οι επιστήμονες στα τέλη της δεκαετίας του 1950 - αρχές της δεκαετίας του 1960 πίστευαν ότι η τεχνητή νοημοσύνη ήταν ήδη στο κατώφλι και με τη βοήθειά της θα ήταν σύντομα δυνατή η εργασία σε έναν υπολογιστή με φυσική, συνηθισμένη, ανθρώπινη γλώσσα.

Zalina 13 Ιανουαρίου 2016 στις 03:42 μ.μ

Διαφορετικές γλώσσες προγραμματισμού και οι τομείς εφαρμογής τους. Διάλεξη στο Yandex

  • Ιστολόγιο της εταιρείας Yandex,
  • Ανάπτυξη ιστοσελίδων,
  • Προγραμματισμός,
  • Βιομηχανικός προγραμματισμός

Αποφασίσαμε να αφιερώσουμε την πρώτη μας ανάρτηση φέτος σε ένα πολύ βασικό θέμα, μια διάλεξη για το οποίο δόθηκε στο Small ShAD. Συμμετέχουν μαθητές γυμνασίου που ενδιαφέρονται για την τεχνολογία, εξ ου και η ιδιαιτερότητα της παρουσίασης - η διάλεξη θα είναι ιδιαίτερα ενδιαφέρουσα για όσους μόλις αρχίζουν να προγραμματίζουν και σκέφτονται ποια κατεύθυνση να αναπτύξουν. Για αυτούς, η Yandex έχει ένα μάθημα "Εισαγωγή στον Προγραμματισμό (C++)", το οποίο μπορεί να παρακολουθηθεί στην πλατφόρμα Stepic.org.

Ο Λέκτορας Mikhail Gustokashin είναι ο επιμελητής ακαδημαϊκών προγραμμάτων στο Yandex, διευθυντής του κέντρου φοιτητικών διαγωνισμών στη Σχολή Επιστήμης Υπολογιστών στην Ανώτατη Οικονομική Σχολή. Ο Μιχαήλ έχει εκπαιδεύσει δεκάδες νικητές και νικητές των Πανρωσικών Ολυμπιάδων Προγραμματισμού.

Η διάλεξη λέει για το ποιες γλώσσες προγραμματισμού υπάρχουν, πώς διαφέρουν, πώς εμφανίστηκαν και ποιες είναι καλύτερες και ποιες είναι χειρότερες. Στην αρχή, θα μιλήσουμε λίγο για την ιστορία των γλωσσών - πώς εμφανίστηκαν, πώς άρχισαν να προγραμματίζουν οι άνθρωποι, πώς αναπτύχθηκαν τα πάντα, τι συμβαίνει τώρα. Το δεύτερο μέρος θα θίξει ποιες εργασίες για ποια γλώσσα είναι κατάλληλη, πώς να «επιλέξετε την αγαπημένη σας γλώσσα και να απολαύσετε τη ζωή». Ο λέκτορας θα μιλήσει επίσης λίγο για το πώς, κατά τη γνώμη του, μπορείς να τα μάθεις όλα αυτά και μετά να βρεις δουλειά.

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

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

Ας τα πάρουμε από την αρχή. Στην αρχή οι υπολογιστές δεν είχαν καν πληκτρολόγια! Δηλαδή, όλα ήταν πολύ άσχημα - δεν είχαν ούτε πληκτρολόγιο ούτε οθόνη, είχαν τρυπημένα χαρτιά (αυτά είναι μικροπράγματα με τρύπες ή χωρίς τρύπες). Αντίστοιχα, είτε κόλλησαν εκεί τις καρφίτσες, είτε έριξαν φως εκεί. Εάν υπάρχει μια τρύπα (ή το αντίστροφο, όχι) - αυτό σήμαινε ένα μηδέν ή ένα. Και τα προγράμματα εκείνη την εποχή γράφονταν χρησιμοποιώντας κώδικες μηχανής - κάθε λειτουργία σε έναν υπολογιστή (πρόσθεση, αφαίρεση, μερικές πιο περίπλοκες πράξεις) είχε κάποιο είδος κώδικα μηχανής. Οι ίδιοι οι άνθρωποι επέλεξαν αυτόν τον κωδικό από μια πινακίδα, όλων των ειδών τις διευθύνσεις στη μνήμη, τα έσκασαν όλα με τα χέρια τους και τον έβαλαν στον αναγνώστη - και όλα μετρήθηκαν. Φυσικά, η δουλειά ενός προγραμματιστή μάλλον δεν ήταν ιδιαίτερα ενδιαφέρουσα τότε - κάνοντας τρύπες - και με την ανάπτυξη της επιστήμης και της τεχνολογίας, φυσικά, άρχισαν να βρίσκουν κάθε λογής πιο «ενδιαφέροντα» πράγματα. Για παράδειγμα, assembler, που ήδη έκανε τη ζωή κάπως πιο εύκολη.

Λοιπόν, πώς έκανε τη ζωή πιο εύκολη; Αντί να θυμόμαστε ότι υπήρχε κάποιο είδος «μαγικού» κώδικα για την εντολή, χρησιμοποιήθηκαν όλα τα είδη λέξεων παρόμοιες με τα αγγλικά «human» - μερικές add ή mov - και στη συνέχεια καταχωρητές ή περιοχές μνήμης, παρατίθενται μεταβλητές με τις οποίες χρειάζονταν εκτελούν λειτουργίες. Αλλά είναι σαφές ότι αυτό, σε γενικές γραμμές, απαιτούσε επίσης πολλή διανοητική προσπάθεια για να κρατήσουμε στο μυαλό μας σε ποιο μητρώο έχουμε τι, πού είναι οι μεταβλητές και τι συμβαίνει γενικά. Γιατί συνέβη αυτό; Γιατί οι υπολογιστές ήταν «ανόητοι» και δεν μπορούσαν να καταλάβουν τίποτα πιο «έξυπνο». Στην πραγματικότητα, η συναρμολόγηση του κώδικα μηχανής από το assembler απαιτεί επίσης χρόνο και μνήμη (εκείνη την εποχή, φυσικά, ήταν λίγος).

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

Παλιές και νεκρές γλώσσες

Μία από τις πρώτες γλώσσες ήταν η Fortran. Παρεμπιπτόντως, ήταν επίσης διάτρητη σε διάτρητες κάρτες - υπήρχαν ειδικές διάτρητες κάρτες για τη διάτρηση των προγραμμάτων Fortran. Αλλά αν πάρετε αυτό το Fortran τώρα, κατά τη γνώμη μου, είναι κάπου μεταξύ 50-60. εμφανίστηκε - και αν προσπαθήσετε να γράψετε κάτι σε αυτό, θα είστε πολύ δυσάρεστοι, σας εγγυώμαι! Το σύγχρονο Fortran είναι ακόμα ζωντανό, αλλά είναι αρκετά διαφορετικό από αυτό που ήταν πριν.

Άλλες γλώσσες - τώρα θα γράψω ένα πράγμα που πιθανότατα έχετε ακούσει μόνο σε διάφορες εκδηλώσεις όπου μιλούν για την ιστορία του προγραμματισμού - αυτό είναι το COBOL. Ήταν μια γλώσσα για τη σύνταξη επιχειρηματικών εφαρμογών. Τι είναι οι επιχειρηματικές εφαρμογές; Κάποιες συναλλαγές σε τράπεζες, κάτι άλλο, όλα αυτά γράφτηκαν στην Cobol. Φυσικά, δεν είναι πολύ δημοφιλές εδώ. Νομίζω ότι θα δυσκολευτείτε πολύ να βρείτε έναν προγραμματιστή Cobol στη Μόσχα. Και κάπου όχι στη Μόσχα - με ακόμη μεγαλύτερη δυσκολία. Αλλά, παραδόξως, μόλις πριν από 10 χρόνια, περισσότερο από το ήμισυ του συνόλου του κώδικα που γράφτηκε από την ανθρωπότητα γράφτηκε στο Cobol. Και μέχρι σήμερα, ένα σημαντικό μέρος όλων των τραπεζικών συναλλαγών πραγματοποιείται χρησιμοποιώντας προγράμματα γραμμένα σε αυτό (COBOL) και οι άνθρωποι εξακολουθούν να γράφουν κάτι σε αυτό.

Υπάρχει επίσης μια «αστεία» γλώσσα, ονομαζόταν Algol (η 68η έκδοση, που χαρακτηρίζει το έτος δημιουργίας της). Αυτή είναι μια αλγοριθμική γλώσσα. Γενικά, μπόρεσαν να κάνουν κάτι εκεί, αλλά τώρα δεν μας ενδιαφέρει πολύ τι μπορούν να κάνουν. Και με αυτό μπορούμε να ολοκληρώσουμε την εκδρομή μας στην αρχαιότητα και σε σχετικά αχρησιμοποίητες γλώσσες και να προχωρήσουμε σε αυτό που είναι ακόμα ζωντανό (και ενεργά).

Παλιές αλλά ζωντανές γλώσσες

Το Algol εφευρέθηκε στην Ευρώπη και το Fortran χρησιμοποιήθηκε κυρίως στις Ηνωμένες Πολιτείες - δεν υπάρχουν μεγάλες διαφορές. Ποια τάση είναι αισθητή; Στην αρχή όλα ήταν περίπλοκα και για να γράψεις έπρεπε να είσαι σχεδόν μηχανικός, ηλεκτρολόγος μηχανικός, για να καταλάβεις πού συνδέονται ποιες επαφές και κάτι άλλο για προγραμματισμό. Έπειτα έπρεπε επίσης να κάθεσαι με τα χαρτάκια και να μετράς τη μνήμη, να την προσέχεις. Και σταδιακά όλα έγιναν πιο απλά, πιο απλά, πιο απλά και μετά ακόμα πιο απλά για τον προγραμματιστή - να σκέφτεται όσο το δυνατόν λιγότερο για έναν άνθρωπο, να κάνει όσο το δυνατόν περισσότερα αυτόματα. Γύρω στο τέλος αυτής της περιόδου (ο ομιλητής επισημαίνει το Algol και το Kobol), αρχίζουν να εμφανίζονται γλώσσες που, κατά μία έννοια, έχουν «επιβιώσει» μέχρι σήμερα.

ΒΑΣΙΚΟΣ. Ίσως κάποιοι εξακολουθούν να γράφουν κάτι σε αυτό, τουλάχιστον είδα ότι σε ορισμένα ιδρύματα διδάσκουν στο QBasic - υπάρχει ένα μπλε παράθυρο όπου γράφεται το "1989". Γενικά, «ζει με όλη του τη δύναμη»! Εφευρέθηκε ως γλώσσα για μη προγραμματιστές. Εκείνη την εποχή, ο προγραμματιστής ήταν ένα τόσο πολύ εξειδικευμένο επάγγελμα. Και εδώ σας λένε: "Έχουμε μια δροσερή βασική γλώσσα και κάθε λογικός άνθρωπος μπορεί να γράψει ένα πρόγραμμα σε αυτήν - είναι εύκολο." Και πάλι, ότι το BASIC και το σύγχρονο BASIC είναι μια τεράστια διαφορά. Όλες αυτές οι γραμμές αριθμούνται μετά το 10, κάθε λογής GOTO και άλλα φρικτά - δεν έχουν πλέον καμία σχέση με το σύγχρονο BASIC, ακόμα και με το BASIC του 1989 δεν έχουν καμία σχέση με αυτό.

Μια άλλη αστεία ιστορία είναι η γλώσσα Pascal, ευρέως γνωστή στους πανεπιστημιακούς κύκλους, κυρίως στη Ρωσία και στις χώρες της πρώην Σοβιετικής Ένωσης. Χρησιμοποιήθηκε και συνεχίζει να χρησιμοποιείται απροσδόκητα ως γλώσσα διδασκαλίας. Στον υπόλοιπο κόσμο είναι λιγότερο κοινό, αλλά είναι επίσης ζωντανό και καλά. Υπάρχει ένα τέτοιο άτομο όπως ο Wirth - είναι επιστήμονας, θεωρητικός. Συμμετείχε στη συζήτηση για το Algol, δεν του άρεσε αυτό που συνέβη και βρήκε τη δική του γλώσσα - τον Pascal. Και μετά η εταιρεία Borland (και πριν από αυτό πολλές άλλες εταιρείες - η Apple εμπλεκόταν, συγκεκριμένα) το πήρε και κατέστρεψε τα πάντα. Είχε μια όμορφη, συνεκτική θεωρία - «όλα θα πάνε καλά» - και την πήραν και την γέμισαν με αυτά που χρειάζονταν οι άνθρωποι για να δουλέψουν. Λοιπόν, δεν έγινε τόσο όμορφο όσο ήθελε.

Και τέλος... Το C επινοήθηκε από μηχανικούς. Αν ο Pascal εφευρέθηκε από έναν επιστήμονα, τότε το C εφευρέθηκε από τον Kernighan και τον Ritchie, εργάστηκαν ως μηχανικοί στο Bell. Πώς έγινε αυτό; Εκείνη την εποχή, ήταν αδύνατο να γραφτεί οτιδήποτε συστημικό σε αυτές τις γλώσσες (ο λέκτορας δείχνει τα Fortran, COBOL, Algol). Τι είναι το «συστημικό»; Για παράδειγμα, ένα λειτουργικό σύστημα, μερικά προγράμματα οδήγησης, κάτι άλλο. Αυτές οι γλώσσες προορίζονταν για μαθηματικούς υπολογισμούς, για επαγγελματικούς υπολογισμούς, για όλα αυτά. Και όλα τα άλλα ήταν γραμμένα στη γλώσσα Assembly. Υπήρχαν κάποιες γλώσσες, είναι πλέον νεκρές, δηλαδή η γλώσσα C δεν εμφανίστηκε αμέσως από το Assembly, αλλά μέσω κάποιων ενδιάμεσων πραγμάτων.

Τι νόημα έχει; Ο Kernighan και ο Ritchie αγαπούσαν να παίζουν το παιχνίδι Asteroids - ένα διαστημόπλοιο πετάει, και υπάρχουν αστεροειδείς, τους πυροβολεί και καταρρέουν. Είχαν έναν διακομιστή στον οποίο έπαιζαν, αλλά υπήρχε πολύς κόσμος εκεί και το παιχνίδι ήταν αργό. Και ανακάλυψαν κάπου στο γραφείο τους ότι είχαν κάποιο είδος υπολογιστή που δεν χρησιμοποιούσε κανείς. Αλλά υπήρχε ένα πρόβλημα - ήταν διαφορετικής αρχιτεκτονικής και το παιχνίδι γράφτηκε σε Assembly.

Το ξαναέγραψαν, φυσικά, πρόσθεσαν ακόμη και κάποια χαρακτηριστικά για να παίξουν σε αυτό. Αλλά αυτό τους οδήγησε στην ιδέα ότι το να ξαναγράφεις για μια νέα αρχιτεκτονική κάθε φορά δεν είναι πολύ έξυπνο. Και αποφάσισαν να γράψουν μια γλώσσα υψηλού επιπέδου που θα ήταν κατάλληλη για προγραμματισμό συστήματος, δηλαδή, στην οποία θα ήταν δυνατή η διαχείριση της μνήμης, στην οποία θα ήταν δυνατό να κατανοήσουμε πού βρίσκονται τα πράγματα και πώς να αποκτήσετε πρόσβαση σε αυτά τα κομμάτια μνήμης . Και έτσι εμφανίστηκε η γλώσσα C, η οποία είχε τεράστια επιρροή σε όλα όσα ακολούθησαν. Όλοι τους (ο ομιλητής επισημαίνει το Algol, το Fortran και άλλες γλώσσες που αναφέρονται) είχαν μεγάλη επιρροή, αλλά C - απλά ναι...

Αντίστοιχα, ήταν η κύρια γλώσσα στο Unix, ένα λειτουργικό σύστημα που ήταν ακόμα πιο δημοφιλές εκείνη την εποχή από ό,τι είναι τώρα. Και γύρω στα 80s, η κατάσταση ήταν κάπως έτσι (ο λέκτορας δείχνει Basic, C και άλλες αναφερόμενες γλώσσες). Ας πούμε ότι όλα αυτά έχουν ήδη σβήσει σιγά σιγά στη χώρα μας (ο λέκτορας σβήνει τις αναφορές για τη γλώσσα Assembly, το Fortran και το Algol)... Και στη δεκαετία του '80, οι υπολογιστές έγιναν μικρότεροι, πιο έξυπνοι, φθηνότεροι και οι άνθρωποι ήθελαν κάθε λογής περίεργα πράγματα να κάνει τη ζωή ακόμα καλύτερη, να ζήσει ακόμα πιο διασκεδαστικά.

Γλώσσες από τη δεκαετία του '80

Ένα από τα πρώτα περίεργα ήταν ότι ήταν γλώσσα C++. Η γλώσσα C έχει έναν τεράστιο αριθμό ελλείψεων (καλά, γενικά τεράστιες) - μπορείτε να κάνετε τα πάντα σε αυτήν, συμπεριλαμβανομένου του να πυροβολήσετε τον εαυτό σας στο πόδι, να πυροβολήσετε τον εαυτό σας στο πόδι με μυθοπλασία, στο άλλο πόδι, να πυροβολήσετε το ένα πόδι στο άλλο πόδι, γενικά - ό,τι θέλεις να κάνεις. Αλλά ταυτόχρονα, ορισμένα αρχιτεκτονικά πράγματα γίνονται εκεί αρκετά δύσκολα - και πάλι, όπως στη Συνέλευση, πρέπει να παρακολουθούμε πού βρισκόμαστε, τι και τι μνήμη έχουμε διαθέσει. Είναι εκεί όλη την ώρα που «ρέει» κάπου, αυτή η μνήμη -δηλαδή, τη διαθέσαμε, ξεχάσαμε να τη διαγράψουμε, διαγράψαμε το λάθος πράγμα, ξεπέρασε τα όρια της μνήμης, γενικά - αντιμετωπίσαμε ένα σωρό προβλήματα.

Η C++ δημιουργήθηκε αρχικά ως ένα σύνολο προσθηκών στη γλώσσα C που θα έκαναν την ανάπτυξη ευκολότερη. Εκείνη την εποχή, ο αντικειμενοστραφής προγραμματισμός έγινε της μόδας και οι άνθρωποι αποφάσισαν ότι όλα θα μπορούσαν να περιγραφούν με τη μορφή μιας ιεραρχίας, δηλαδή, έχεις μια μπάλα (αφηρημένη), κληρονομείς από αυτήν μια μπάλα ποδοσφαίρου, μια μπάλα βόλεϊ, μια άλλη αφηρημένη μπάλα. . Ήταν της μόδας τότε ότι «τώρα γράφουμε τα πάντα με τη μορφή κάποιας ιεραρχίας, και όλα θα πάνε καλά, η ζωή θα γίνει καλύτερη, όλα θα πάνε καλά και αυτό είναι». Η C++, κατά μία έννοια, εφάρμοσε αυτήν την αντικειμενική προσέγγιση - δεν ήταν η πρώτη αντικειμενοστραφής γλώσσα προγραμματισμού, αλλά έγινε αρκετά δημοφιλής και όλα τα είδη των χαρακτηριστικών άρχισαν να εμφανίζονται σε αυτήν. Ταυτόχρονα, η C++ διατήρησε σχεδόν πλήρη συμβατότητα (εκείνη την εποχή) με τη γλώσσα C ένα πρόγραμμα μεταγλωττίστηκε με επιτυχία ως C++ στο 99% των περιπτώσεων και λειτουργούσε με τον ίδιο τρόπο. Αυτό είχε σκοπό να διευκολύνει τη μετάβαση από το C σε C++.

Εκτός από την προσέγγιση αντικειμένων (σε C++), εμφανίστηκε γρήγορα μια τυπική βιβλιοθήκη προτύπων (STL). Νομίζω ότι στο σχολείο, όσοι μάθαιναν ακόμα Pascal ανακάλυψαν ότι, πρώτον, δεν έχετε ενσωματωμένη ταξινόμηση (στο αρχαίο, μπλε Borland Pascal, τώρα είναι ήδη σε σύγχρονες εκδόσεις) - υπάρχει ένα παράδειγμα (πηγή κωδικός) ταξινόμηση, μπορεί να αντιγραφεί και να επικολληθεί. Αλλά αν θέλετε να ταξινομήσετε ακέραιους αριθμούς εδώ, πραγματικούς αριθμούς εδώ, και συμβολοσειρές εδώ που μπορούν να συγκριθούν μεταξύ τους, έπρεπε να γράψετε τρεις διαφορετικές κατηγορίες που κάνουν ακριβώς το ίδιο πράγμα, απλώς έχουν διαφορετικούς τύπους δεδομένων. Αυτό δεν είναι πολύ καλό και τα πρότυπα που δεν εμφανίστηκαν αμέσως στη C++ μείωσαν σημαντικά αυτό το πρόβλημα. Δηλαδή, είχατε ένα αφηρημένο πρόγραμμα που ταξινόμησε με επιτυχία κάτι που μπορούσε να συγκριθεί μεταξύ τους.

Γλώσσες γραφής από τη δεκαετία του '90

Αλλά ο χρόνος δεν έμεινε ακίνητος στη δεκαετία του '80, συνέβησαν πολλά ενδιαφέροντα πράγματα. Αλλά κάπου στις αρχές της δεκαετίας του '80 και του '90, οι υπολογιστές έγιναν τόσο καλοί που ήταν δυνατό να κάνουμε πολύ περίεργα και πολύ αναποτελεσματικά πράγματα. Συγκεκριμένα, αυτές ήταν γλώσσες σεναρίου που δεν μεταγλωττίστηκαν σε κώδικα μηχανής, αλλά μάλλον ερμηνεύτηκαν. Το BASIC ερμηνεύτηκε επίσης κάποια στιγμή, αλλά αυτές οι γλώσσες δέσμης ενεργειών προορίζονταν κυρίως για επεξεργασία κειμένου - αυτές είναι, για παράδειγμα, Perl, Python (δεν ήταν πολύ διάσημο τότε), PHP, Ruby - αυτές είναι οι γλώσσες σεναρίου που στο ένα ή το άλλο σε διαφορετικό βαθμό, ζουν ακόμα (όλοι τους κατάφεραν να εμφανιστούν πριν από το 2000, ακόμη και πολύ νωρίτερα).

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

Το Perl προοριζόταν για επεξεργασία κειμένου - εκείνες τις μέρες υπήρχε τόση μνήμη στους υπολογιστές που μπορούσες να γεμίσεις κείμενο εκεί και να κάνεις κάτι χρήσιμο με αυτό το κείμενο (για παράδειγμα, να μετράς λέξεις, να κάνεις κάποιο είδος αναζήτησης). Αλλά, κατά τη γνώμη μου, σχεδιάστηκε από ανθρώπους που ήταν λίγο τρελοί, επειδή υπάρχει ένα αστείο σχετικά με αυτό: "Οποιοδήποτε σύνολο χαρακτήρων γραμμένο είναι ένα έγκυρο πρόγραμμα Perl." Κατά τη γνώμη μου, μπορείτε μόνο να γράψετε πάνω του, δεν μπορείτε να το διαβάσετε. Όταν κοιτάζω τον κώδικα Perl και προσπαθώ να καταλάβω κάτι, δεν καταλαβαίνω τίποτα. Ίσως αν τον ήξερα καλύτερα, θα καταλάβαινα κάτι, αλλά όπως άκουσα από εκείνους τους ανθρώπους που ξέρουν ακόμα πώς, λένε ότι είναι πιο εύκολο να το ξαναγράψω. Δηλαδή, τα προγράμματα αποδεικνύονται σύντομα και είναι πραγματικά πιο εύκολο να τα ξαναγράψεις από την αρχή παρά να καταλάβεις τι υπάρχει και να το διορθώσεις.

Εκείνη την εποχή, στα μέσα της δεκαετίας του '90, εμφανίστηκε το Διαδίκτυο. Στην αρχή ήταν ταχυδρομείο, ιστότοποι με στατικό HTML, αλλά οι άνθρωποι ήθελαν να προσθέσουν κάποιο είδος δυναμικής εκεί, ώστε όλα να γίνονται δυναμικά, να συμπληρώνονται κάποιες φόρμες, να δημιουργούνται βιβλία επισκεπτών και κάτι άλλο. Κατά συνέπεια, αυτό απαιτούσε κάποιου είδους αλληλεπίδραση, κατέληξαν σε ένα πρωτόκολλο, πώς αλληλεπιδρά και, το πιο σημαντικό, τη δημιουργία αυτών των στατικών (υπό όρους) σελίδων που θα «φτύσουν» στον χρήστη ως απάντηση στο αίτημά του.

Γενικά, τίποτα άλλο από το Pearl δεν ήταν κατάλληλο εκείνη την εποχή. Το να γράψεις έναν χειριστή σε καθαρή C ή C++ ήταν κακή ιδέα. Και ελλείψει τίποτα καλύτερο, εκείνη την εποχή (και για αρκετό καιρό) η Pearl ήταν η δημοφιλής γλώσσα για την ανάπτυξη ιστού. Φυσικά, η κλίμακα δεν μπορεί να συγκριθεί με αυτό που συμβαίνει τώρα.

Η PHP εμφανίστηκε ως... τυχαία. Ένα άτομο πολύ γρήγορα σταμάτησε να το κάνει αυτό - έφτιαξε τη δική του σελίδα, είχε κάποιο είδος βιβλίου επισκεπτών, κάτι άλλο, κάποια άλλα πράγματα. Και έγραψε ένα σύνολο από μερικές μακροεντολές για την Perl που ήταν παρόμοιες με το C, επειδή ήξερε πώς να χρησιμοποιεί το C, απλώς επειδή του ήταν τόσο βολικό. Και το ονόμασα Προσωπική Αρχική Σελίδα. Το μοιράστηκε και είπε: «Κοιτάξτε τι έγραψα, όλα εδώ είναι πολύ πιο ξεκάθαρα από ό,τι στο Perl και μπορείτε να τα επεξεργαστείτε». Και άρεσε στον κόσμο.

Μετά παράτησε αυτή την επιχείρηση. Σε γενικές γραμμές, ως αποτέλεσμα, αυτή η PHP άρχισε να ζει και έγινε με τον καιρό πολύ πιο δημοφιλής από την Perl. Αλλά αυτό το «τραύμα γέννησής» του (που σχεδιάστηκε ως ένα σύνολο μακροεντολών για τον Pearl) του έκανε ένα πολύ σκληρό αστείο. Η γλώσσα έγινε περίεργη. Δηλαδή, αναπτύχθηκε από μόνο του, κανείς δεν το σχεδίασε, κανείς δεν διαχειρίστηκε τη διαδικασία ανάπτυξης (ούτε εταιρεία, ούτε κανένα άτομο), αλλά υπήρχαν πολλές ομάδες, καθεμία από τις οποίες πριόνισε αυτό που τους άρεσε. Ως αποτέλεσμα, οι λειτουργίες ονομάζονται διαφορετικά, δεν υπάρχει καν στυλ, όλα είναι υπογραμμισμένα, βασικά τυχαία, οι ρυθμίσεις είναι εδώ κι εκεί και πώς θα λειτουργήσουν όλα αυτά δεν είναι πολύ σαφές. Αλλά μπορείτε να καθίσετε και να γράψετε σε PHP σε δύο ώρες, γιατί έτσι προοριζόταν.

Python και Ruby: Το Ruby είναι λιγότερο δημοφιλές τώρα, το Python είναι κατά κάποιο τρόπο καλύτερα «πλανισμένο», ας το μιλήσουμε αργότερα. Είναι σαφές ότι εκείνες τις μέρες αυτές ήταν (ο ομιλητής επισημαίνει την Perl, Python, Ruby, PHP) εξαιρετικά εξειδικευμένες γλώσσες για εξαιρετικά εξειδικευμένους σκοπούς. Γενικά, κανείς δεν έγραφε κανένα προγραμματισμό συστήματος, καμία επιχειρηματική λογική σε αυτά εκείνη την εποχή και τώρα δεν το κάνει και πολύ.

Συγκεντρωμένες γλώσσες από τη δεκαετία του '90

Θα κινηθούμε τις ίδιες φορές, αλλά προς την άλλη κατεύθυνση. Εκείνη την εποχή, χρησιμοποιούσαμε τη C++ για σχεδόν όλα όσα έπρεπε να γραφτούν, όχι για το διαδίκτυο, όχι για επεξεργασία κειμένου, αλλά για απλές εφαρμογές, για λειτουργικά συστήματα, για παιχνίδια - γενικά, για οτιδήποτε. Αλλά η C++ είναι στην πραγματικότητα μια τρομερή γλώσσα. Γιατί; Επειδή, πρώτον, κληρονόμησε όλα τα προβλήματα C λόγω συμβατότητας προς τα πίσω. Εκεί θα μπορούσες ακόμα να αυτοκτονήσεις με ένα εκατομμύριο διαφορετικούς τρόπους, τους ίδιους που ήταν στο C (φυσικά, νέοι τρόποι προστέθηκαν στη C++). Ταυτόχρονα, εάν γράψετε τα πάντα καλά και σωστά, όπως προοριζόταν από τους συντάκτες της C++, τότε, φυσικά, δεν ήταν πλέον δυνατό να αυτοκτονήσετε χρησιμοποιώντας τις παλιές μεθόδους κώδικα C και φαίνεται ότι υπάρχουν λιγότερα τους. Ωστόσο, είχε ένα πολύ παράξενο, περίεργο μοντέλο αντικειμένου. Ο διαχωρισμός ενός προγράμματος σε ενότητες, σε κάποια κομμάτια, γενικά προήλθε από το C (αν γνωρίζετε πώς να γράφετε, συμπεριλάβετε σε C ή C++ - στην πραγματικότητα, προοριζόταν ως ένας τρόπος να εισαγάγετε απλώς το κείμενο της βιβλιοθήκης στο πρόγραμμά σας, στο τέλος, όταν γράφετε ένα σωρό περιλαμβάνει, έχετε τα πάντα - αν είναι "πρωτόγονο", όπως ήταν στην αρχή - όλα εισάγονται σε ένα αρχείο και μετά χρειάζονται τρομερά πολύ χρόνο για να μεταγλωττιστούν, επειδή το ίδιο Pascal , ο Virtovsky, ήταν πολύ πιο προσεκτικός από αυτή την άποψη, οι μεταγενέστερες εκδόσεις έγιναν ακόμη καλύτερες.

Γενικά, η C++ έχει πολλά μειονεκτήματα. Ο προγραμματιστής έπρεπε να έχει υψηλά προσόντα για να γράφει σε C++, και τέτοιοι προγραμματιστές ήταν ακριβοί (και η εκπαίδευση, και κάτι άλλο, δηλαδή, είναι δύσκολο να βρεις προγραμματιστές στην αγορά, πρέπει να πληρωθούν πολύ, και γενικά αυτό είναι όχι το θέμα...). Και οι υπολογιστές μας μετρούν όλο και πιο γρήγορα, γίνονται φθηνότεροι, οι άνθρωποι αγοράζουν νέους υπολογιστές και θέλουν περισσότερες εφαρμογές, περισσότερα παιχνίδια για τα τηλέφωνά τους, γενικά - περισσότερη χαρά.

Έτσι εμφανίστηκε η Java. Υπάρχει επίσης μια μάλλον αστεία ιστορία για το πώς πήρε το όνομά της αυτή η γλώσσα. Υπάρχουν προγραμματιστές εκεί, πίνουν συνέχεια καφέ και εκείνη την εποχή ήταν της μόδας να πίνουν καφέ, που φύτρωνε στο νησί της Ιάβας. Η γλώσσα σχεδιάστηκε ως γλώσσα για ενσωματωμένες συσκευές, ιδιαίτερα για καφετιέρα. Έτσι προέκυψε το όνομα...
Τι ξεκίνησε μαζί της, τι ήταν καλό της και γιατί κέρδισε τόση δημοτικότητα; Πρώτον, ξεφορτώθηκαν εντελώς την κληρονομιά του Sishnoi. Δεν υπάρχουν σημάδια, πολύ λιγότεροι τρόποι να αποσπάσεις κάποιο μέρος του σώματός σου και να σπάσεις τα πάντα. Δεύτερον, εισήγαγαν πολύ πιο πρόσφατες ιδέες όσον αφορά το μοντέλο αντικειμένου - δηλαδή, η C++ εμφανίστηκε πολύ νωρίτερα από την Java και χρησιμοποίησε ένα πιο αρχαϊκό, «άγριο» μοντέλο αντικειμένων. Λοιπόν, εδώ (ο ομιλητής επισημαίνει την Java) ήταν ήδη πιο μελετημένο τότε, και θεωρητικά οι άνθρωποι σκέφτηκαν, και στην πράξη εφάρμοζαν και έκαναν τα πάντα πολύ πιο δροσερά.

Και τέλος, τρίτο. Τα προγράμματα Java μας μεταγλωττίστηκαν όχι σε κώδικα μηχανής, αλλά σε κώδικα για μια εικονική μηχανή. Δηλαδή, είχατε μια εικονική μηχανή (VM) JVM - Java. Τα προγράμματά σας συγκεντρώθηκαν σε κάποιο είδος ενδιάμεσης αναπαράστασης και στη συνέχεια, με τη βοήθεια αυτού του μηχανήματος, είχαν ήδη εκτελεστεί. Τι έδωσε; Πρώτον, επιβράδυνε, δεύτερον, έτρωγε τη μνήμη με τρομερή δύναμη, τρίτον, ήταν φορητό οπουδήποτε (θεωρητικά) - ακόμα και σε καφετιέρα, ακόμα και σε μύλο καφέ, ακόμα και σε υπολογιστή, ακόμα και σε κινητό. Από τη μια, αυτό είναι καλό, δηλαδή, απλώς έγραψες μια υλοποίηση μιας εικονικής μηχανής και μετά τρέχεις τα προγράμματα Java σου παντού. Αλλά, από την άλλη πλευρά, είναι κακό που το ίδιο τηλέφωνο είχε τότε λίγη μνήμη, χαμηλή απόδοση και όλα αυτά άρχισαν επίσης να επιβραδύνουν και να επιβραδύνουν.

Αλλά αυτό δεν είναι καν το κύριο πράγμα για το οποίο εφευρέθηκε η γλώσσα εξαρχής. Η γλώσσα Java επινοήθηκε για να μειώσει τις απαιτήσεις προσόντων για προγραμματιστές. Δηλαδή, οι χειρότεροι προγραμματιστές μπορούν να γράφουν καλά προγράμματα σε Java, επειδή δεν σας επιτρέπει να γράφετε κακά προγράμματα - δεν υπάρχει κανένα μέσο για να γράψετε κακά προγράμματα. Εκεί μπορείς να γράψεις μόνο καλά προγράμματα. Λοιπόν, στην κατανόηση των δημιουργών της γλώσσας.

Δηλαδή, αν στο C, στη C++, στην Python, σε οτιδήποτε, μπορούμε να δημιουργήσουμε κάποιου είδους τρομερό σκουπιδότοπο από το έργο μας, όπου τα έχουμε όλα ανακατεμένα, συναρμολογημένα για ώρες και κάτι άλλο. Είναι επίσης δυνατό να δημιουργηθεί μια χωματερή στην Java, αλλά αυτό απαιτεί κάποια προσπάθεια. Δηλαδή, από προεπιλογή, δεν είναι "σκουπιδότοπος", προκύπτουν άλλα προβλήματα, ότι κάτι έχει κληρονομηθεί και κληρονομηθεί - γενικά, για μια σημαντική γραμμή παίρνετε δέκα όχι πολύ νόημα. Όμως, ένας τέτοιος προγραμματιστής με μέτρια κατάρτιση μπορεί να γράψει κώδικα αρκετά υψηλής ποιότητας.
Είμαστε σχεδόν στο τέλος. Για εμάς το επόμενο που εμφανίστηκε ήταν το .Net (dotnet) και συγκεκριμένα μας ενδιαφέρει το C# (σχεδόν το ίδιο πράγμα [ο λέκτορας δείχνει την Java], δηλαδή υπάρχουν διαφορές στις λεπτομέρειες, αν επιλέξετε μεταξύ τους , κοιτάξτε πού πληρώνουν περισσότερα χρήματα).

Και κάτι ακόμα - JavaScript. Δεν έχει καμία σχέση με τη γλώσσα Java, εμφανίστηκε την ίδια χρονιά - η λέξη ήταν της μόδας, έδωσαν άδεια χρήσης στο εμπορικό σήμα.

Ποιο είναι το κύριο πράγμα που πρέπει να προσέξεις; (Ο ομιλητής σχεδιάζει βέλη από C++ σε Java, .Net, C#, JavaScript και PHP). Για να γράψετε ένα απλό πρόγραμμα σε μία από αυτές τις γλώσσες και σε πολλές άλλες - αν γνωρίζετε C++, γενικά δεν χρειάζεται να γνωρίζετε τίποτα άλλο - γράφετε σε C++ και μετά προσθέτετε δολάρια στην αρχή, κάτι άλλο κάνει μικρά πράγματα και αρχίζει να δουλεύει σε οτιδήποτε (ο καθηγητής δείχνει τις γλώσσες στις οποίες έχουν αντιστοιχιστεί τα βέλη από τη C++). Μοιάζουν δηλαδή εξαιρετικά σε κάποια απλά πράγματα. Εάν λύνετε κάποια σχολικά προβλήματα, εκπαιδευτικά προβλήματα ή κάτι άλλο (δεν σχεδιάζετε ένα μεγάλο έργο - έχετε ένα αρχείο που διαβάζει αριθμούς, εμφανίζει αριθμούς στην κονσόλα και κάνει κάτι άλλο), τότε δεν υπάρχει σχεδόν καμία διαφορά μεταξύ αυτές οι γλώσσες. Είναι ξεκάθαρο ότι η JavaScript και η PHP είναι εξειδικευμένες, όλα είναι λίγο διαφορετικά για αυτούς. Αλλά εδώ (ο λέκτορας υποδεικνύει Java και C#) υπάρχει πολύ μικρή διαφορά.

Έκτοτε, έχουν εμφανιστεί κάθε λογής άλλα ενδιαφέροντα πράγματα, αλλά δεν είναι ξεκάθαρο αν θα ζήσουν ή θα πεθάνουν με επιτυχία. Τι χρησιμοποιούν τώρα, για ποιους σκοπούς;

Επιλογή γλώσσας ανάλογα με την εργασία

Ας υποθέσουμε ότι αντιμετωπίζετε το καθήκον να γράψετε ένα πρόγραμμα οδήγησης για μια κάρτα βίντεο. Ποια γλώσσα θα χρησιμοποιήσετε σήμερα; (Φωνάξτε από το κοινό: Java!) Γιατί... Η Java είναι υπέροχη, αλλά γιατί όχι η Ruby ή η PHP; (Ο ομιλητής μιλάει σαρκαστικά.)

Προγραμματισμός χαμηλού επιπέδου

Εάν γράφετε κάτι χαμηλού επιπέδου, τότε η καλύτερη επιλογή είναι η C, αλλά στην πραγματικότητα έχω ακούσει (αλλά δεν έχω δει) ότι η C++ χρησιμοποιείται για αυτό. Αλλά έχω ελάχιστη πίστη σε αυτό, γιατί στο C μπορείτε ξεκάθαρα να ελέγξετε - αφού δώσατε τόσα πολλά byte μνήμης, αυτό σημαίνει ότι θα υπάρχουν τόσα πολλά. Και στη C++ (STL) πώς υλοποιείται μια συμβολοσειρά; Λοιπόν, κατά κάποιο τρόπο εφαρμόστηκε. Και στο τέλος δεν ξέρουμε πώς και τι συμβαίνει εκεί, ίσως μας τελειώσει η μνήμη στην κάρτα γραφικών μας ή θα συμβεί κάτι άλλο. Επομένως, το C εξακολουθεί να ζει και δεν πεθαίνει, τέτοιες εργασίες προγραμματισμού συστήματος εξακολουθούν να υπάρχουν - γράψτε ένα λειτουργικό σύστημα, γράψτε προγράμματα οδήγησης, γράψτε κάτι άλλο - το C είναι εξαιρετικό για αυτό. Επιπλέον, τώρα εμφανίζονται κάθε είδους συσκευές (το Διαδίκτυο των Πραγμάτων υπόσχεται να έρθει σύντομα) που λειτουργούν με μπαταρίες (και, φυσικά, θα υπάρχουν εκατομμύρια από αυτές, όλα θα καλυφθούν με αυτό το Διαδίκτυο των Πραγμάτων), θα πρέπει να είναι πολύ φθηνά και να έχουν πολύ λίγη κατανάλωση ρεύματος. Αντίστοιχα, θα υπάρχουν 2 KB μνήμης, ένας επεξεργαστής 5 kHz και είναι σαφές ότι δεν θα είναι δυνατό να βιδώσετε κάποιο είδος εικονικής μηχανής ή γλώσσας σεναρίου στο εγγύς μέλλον - πράγμα που σημαίνει ότι θα πρέπει να γράψετε κάτι στο Γ. Και ακόμη και τώρα, για παράδειγμα, υπολογιστές σε μια κάρτα βίντεο (OpenCL ή κάποια άλλη τεχνολογία) - δεν βρίσκουν μια νέα γλώσσα για να γράψουν προγράμματα για αυτούς - κάνουν C με μερικούς μεγάλους περιορισμούς. Ακριβώς επειδή οι άνθρωποι ξέρουν ήδη πώς, γιατί να μάθουν κάτι νέο; Τυπικά, αυτό είναι πιθανώς, κατά μία έννοια, C.

Προγραμματισμός Ιστού

Ας υποθέσουμε ότι θέλετε να γράψετε ένα νέο Facebook (κοινωνικό δίκτυο). Σε τι θα το γράψεις αυτό; (Οι άνθρωποι από το κοινό μιλούν για HTML και CSS.) Το HTML και το CSS είναι σχεδιασμός και θέλουμε να μπορούμε να προσθέτουμε φωτογραφίες, φίλους και να αφήνουμε σχόλια εκεί.

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

Παραδόξως, είναι γραμμένο σε PHP - και Facebook, και πολλά άλλα μεγάλα έργα. Έπρεπε βέβαια να γράψουν κάποια δικά τους πράγματα για να συνεχίσει να λειτουργεί κανονικά, και όχι με «τσαμπουκά» τρόπο, αλλά το έκαναν. Κατ 'αρχήν, λίγο πολύ δεν έχει σημασία τι γράφετε, αλλά δεν προτείνω την Perl. Εδώ και τώρα, φυσικά, κανείς δεν γράφει τίποτα για το διαδίκτυο από την αρχή. Όλοι γράφουν κάποιου είδους πλαίσιο ή κάτι άλλο. Ηλεκτρονικό κατάστημα; Κατεβάσαμε ένα πλαίσιο για ένα ηλεκτρονικό κατάστημα - και αυτό ήταν, γράψαμε ένα ηλεκτρονικό κατάστημα.

Προγραμματισμός για επιχειρήσεις

Στη συνέχεια θέλετε να γράψετε κάποια βαρετή αίτηση για μια τράπεζα. Ή, για παράδειγμα, έχετε κάποιον που πουλάει κάρτες SIM; Ίσως να έχετε αγοράσει ποτέ ένα τηλέφωνο ή κάτι άλλο και να σας έχουν πει: "Το σύστημα κολλάει, δεν μπορούμε να κάνουμε τίποτα". Τι θα χρησιμοποιήσετε για να γράψετε μια τέτοια εφαρμογή; (Φωνάξτε από το κοινό για την Python) Δεν μπορείτε να το γράψετε αυτό στην Python, τι λέτε;! Δεν χρειάζεται να γράψετε τίποτα για επαγγελματικούς λόγους στην Python. Γιατί; Επειδή όταν γράφετε κάτι σε Python, είναι αδύνατο να ανιχνεύσετε σημαντικό αριθμό σφαλμάτων κατά τη διαδικασία γραφής. Η Python πληκτρολογείται δυναμικά με κάθε δυνατό τρόπο και γενικά μπορείς να κρύψεις ένα σφάλμα με τέτοιο τρόπο που θα εμφανιστεί σε τέτοια κατάσταση που δεν θα μπορείς καν να καταλάβεις τι έκαναν αυτοί οι απατεώνες χρήστες εκεί, ότι όλα είναι σπασμένο για σένα. Δηλαδή, στην Python είναι καλύτερο να γράφετε μικρά σενάρια για τον εαυτό σας - καταλαβαίνετε τι συμβαίνει εκεί και τι γίνεται. Λοιπόν, ή κάτι που δεν σας πειράζει να πετάξετε: θέλετε να διαθέσετε κάτι μπροστά από τους ανταγωνιστές σας, οπότε τι γίνεται αν σπάει κάθε τόσο. Έγραψες σε Python και αυτό είναι - κατέλαβες την αγορά. Και αν γράφετε κάτι για μεγάλο χρονικό διάστημα, για παράδειγμα, κάποιο είδος τραπεζικής εφαρμογής (ώστε να εγκρίνει δάνεια, κάτι άλλο) - το γράφετε σε Java. Γιατί είναι σοβαρό θέμα, χαρτιά, λεφτά, έγγραφα, κάτι άλλο, αλλά δεν μπορείς να το χαλάσεις τόσο πολύ ώστε να σπάσουν όλα, αλλιώς οι άνθρωποι θα προσβληθούν - τα λεφτά τους έφυγαν και δεν έφτασαν πουθενά, γιατί σε κάποιο είδος της στιγμής η χορδή μετατράπηκε σε αριθμό ή το αντίστροφο. Δηλαδή, σημαίνει ότι το παίρνεις μεθοδικά σε Java και γράφεις, γράφεις... Ε, ή στο .Net, κατ' αρχήν συμβαίνουν και τέτοιες καταστάσεις. Εκεί, φυσικά, μπορεί επίσης να αντιμετωπίσετε προβλήματα, αλλά και πάλι η πιθανότητα αυτού είναι κάπως χαμηλότερη.

Προγραμματισμός για τον στρατό, την αεροδιαστημική βιομηχανία

Τώρα φανταστείτε ότι αποφάσισαν να σας στείλουν στη Σελήνη με έναν πύραυλο. Τι θα προτιμούσατε να χρησιμοποιηθεί για να γράψετε τον κώδικα που ελέγχει τους κινητήρες πυραύλων; Ας δούμε. Αυτό, μάλλον (ο ομιλητής δείχνει Perl, Python, PHP, Ruby), δεν αξίζει τον κόπο - επιβραδύνει, κάτι άλλο συμβαίνει και γενικά δεν θα συμφωνούσα να πετάξω με τέτοιο πύραυλο. Σε C++; Για να είμαι ειλικρινής, ούτε εγώ θα το εμπιστευόμουν, γιατί στη C++ υπάρχουν πάρα πολλοί τρόποι να αυτοκτονήσεις. Όταν είσαι εκεί έξω κάπου στο διάστημα, δεν είναι πολύ καλό.

Ίσως σε Java; Φαίνεται ότι όλα εκεί είναι αρκετά αξιόπιστα και η αρχιτεκτονική είναι καλή, χωρίς άγριους τύπους, χωρίς περιττά ταξίδια πέρα ​​από τα όρια μνήμης. Ας πούμε ότι ήρθε η πιο κρίσιμη στιγμή και η Java μας αποφάσισε να μαζέψει σκουπίδια για εμάς. Πρέπει να προσγειωθούμε, να επιβραδύνουμε και εκείνη λέει: «Όχι, τα σκουπίδια πάνε». Γενικά ούτε και πολύ καλό.

Ειλικρινά, θα προτιμούσα αυτό το πρόγραμμα να ήταν γραμμένο σε Pascal. Φυσικά, δεν μου αρέσει πολύ ο Pascal, αλλά κατά κάποιο τρόπο σε τέτοια θέματα θα ήταν πολύ ωραίο.

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

Λοιπόν, τι πρέπει να ειπωθεί γενικά για τις σύγχρονες γλώσσες; Τώρα πολλά έργα δεν ζουν σε καμία γλώσσα, δηλαδή μερικά από αυτά ζουν σε μια γλώσσα, άλλα σε άλλη και άλλα σε τρίτη. Για παράδειγμα, εάν έχετε κάποιο είδος διαδικτυακής εφαρμογής που επεξεργάζεται τεράστιες ποσότητες πληροφοριών, οι κλήσεις σε δίσκους (ούτε καν σε βάσεις δεδομένων, είναι τόσο τεράστιες που ακόμη και μια βάση δεδομένων εκεί δεν μπορεί να χειριστεί καμία ήδη γραμμένη) είναι πιθανώς γραμμένες σε κάποιο είδος μετά χαμηλού επιπέδου C, για να γράφει άγρια ​​γρήγορα στο δίσκο και όλα αυτά. Φυσικά, δεν αξίζει να γράψετε ολόκληρο το έργο στο C. Ίσως υπάρχει κάποιο είδος ενδιάμεσης λογικής γραμμένη σε Java που καλεί τις συναρτήσεις C για γρήγορες κλήσεις. Λοιπόν, το frontend (αυτό που κοιτάζει ο χρήστης), φυσικά, είναι ήδη γραμμένο σε κάτι, σε μερικά σενάρια, σε κάτι που εκτελείται απευθείας από το πρόγραμμα περιήγησης (JavaScript). Και όλα αυτά ζουν μαζί και αλληλεπιδρούν με επιτυχία.

Κατά την ανάπτυξη ορισμένων εφαρμογών, ακόμη και μεγάλων, μερικές φορές τι κάνουν οι άνθρωποι; Το παίρνουν και γράφουν ένα πρωτότυπο σε Python (πώς θα λειτουργήσει όλα), το σκιαγραφούν, σκέφτονται μέσα από κάποιο είδος αρχιτεκτονικής. Το γράψιμο σε αυτό είναι πραγματικά πολύ γρήγορο - έριξαν μαζί ένα πρωτότυπο, πειραματίστηκαν με αυτό και είπαν: «Ουάου! Είναι τόσο ωραίο!» Και το ξαναέγραψαν εντελώς. Φαίνεται ότι έκαναν τη δουλειά δύο φορές, πράγμα που την έκανε να πάρει διπλάσιο χρόνο (καλά, ενάμιση). Αλλά όχι! Συχνά αποδεικνύεται ότι αυτή η μέθοδος δεν είναι κακή, γιατί αν γράψετε κάτι αμέσως, για παράδειγμα σε Java, και στη συνέχεια αποφασίσετε: "Όχι, ας ανακατασκευάσουμε, αλλάξουμε την αρχιτεκτονική εντελώς και όλα αυτά", τότε θα ξοδέψετε 10 φορές περισσότερα χρόνος. Τέτοια πράγματα υπάρχουν και ζουν.

Προϋποθέσεις για την επιτυχία οποιασδήποτε γλώσσας προγραμματισμού

Τώρα ας μιλήσουμε για το γιατί μερικές όμορφες γλώσσες δεν επιβίωσαν ή έζησαν σε έναν πολύ περιορισμένο χώρο. Όταν ο Wirth είδε τι κακές εταιρείες Apple, Borland και όλα αυτά έκαναν στον Pascal του, βρήκε μια ακόμα καλύτερη γλώσσα - την Oberon. Ήταν απλώς τρελά μινιμαλιστικό - δηλαδή, υπήρχαν πολύ λίγες εντολές (Strings; Γιατί χρειαζόμαστε συμβολοσειρές; Θα φτιάξουμε μια σειρά χαρακτήρων!). Λοιπόν, κάτι δεν του βγήκε, στο βαθμό που θα μπορούσε να του βγει.

Κάτι ακόμα. Ο Αμερικανός στρατός τους ζήτησε να αναπτύξουν μια δροσερή γλώσσα στην οποία όλα λειτουργούν και όλα μπορούν να γραφτούν. Το αποτέλεσμα ήταν μια μάλλον τερατώδης γλώσσα Ada, στην οποία, ωστόσο, γράφουν ακόμα κάτι, αλλά και πάλι - μόνο για τους στρατιωτικούς.

Ποιο είναι το πρόβλημα; Γιατί κάποιες γλώσσες όπως η Python, τις οποίες καμία εταιρεία δεν υποστήριζε στην αρχή, κατέλαβαν την αγορά. Η PHP, η οποία είναι επίσης κακοσχεδιασμένη, ανέλαβε επίσης την αγορά (το μεγαλύτερο μέρος της) από μόνη της. Και επενδύθηκαν κάθε λογής δισεκατομμύρια δολάρια (ο λέκτορας δείχνει τον Άντα) και δεν πήγαν πουθενά, δεν έγινε τίποτα. Με τι συνδέεται αυτό; Αυτό οφείλεται στο γεγονός ότι δεν υπάρχει υποδομή γύρω από αυτές τις γλώσσες. Δηλαδή, η γλώσσα μπορεί να είναι εξαιρετική, αλλά εφόσον δεν υπάρχει τεκμηρίωση, αρκεί να μην υπάρχει κοινότητα που να μπορεί να απαντήσει σε ερωτήσεις (στο Stack Overflow) και, τέλος, το πιο σημαντικό, εφόσον δεν υπάρχει μεγάλος αριθμός των βιβλιοθηκών, η γλώσσα δεν απογειώνεται. Δηλαδή, για παράδειγμα, θέλατε να γράψετε έναν ιστότοπο στο Oberon. Τι είναι, γιατί όχι; Και η ταλαιπωρία αρχίζει... Δεν μπορείτε να ρυθμίσετε τον δικό σας διακομιστή ιστού στο Oberon για να το δοκιμάσετε ελαφρά, δεν μπορείτε να συνδέσετε βιβλιοθήκες, επειδή το Oberon δεν τις διαθέτει. Και όλα αυτά γίνονται μέσω κάποιων πατερίτσες, φεύγει η δύναμη και γενικά τα παρατάς και γράφεις την ιστοσελίδα σου σε καθαρό C αντί για Oberon. Και αυτές οι γλώσσες που ζουν καλά είναι αυτές που ξέρουν πώς να χρησιμοποιούν βιβλιοθήκες από άλλες γλώσσες. Το ίδιο Python σε εκείνα τα μέρη που επιβραδύνει. Λοιπόν, γενικά, όλα τα τυπικά πράγματα όπως η ταξινόμηση και κάτι άλλο είναι γραμμένα σε C, και αυτό (Python) μπορεί να αλληλεπιδράσει μαζί τους.

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

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

Τώρα ας μιλήσουμε για το πώς να καταλάβετε τι θέλετε στη ζωή. Ποια είναι τα πιο ωραία πράγματα; Μπορείτε να κάνετε προγραμματισμό συστημάτων, σωστά; Είναι υπέροχο για εσάς να μετράτε αυτά τα κομμάτια, θέλετε να λανσάρετε τετρακόπτερα, κάποιου είδους κάμερες και να κάνετε κάτι άλλο. Τότε, πιθανώς, το C είναι η επιλογή σας.

Αν θέλετε να γράψετε, ίσως όχι τις πιο ενδιαφέρουσες εφαρμογές στη ζωή, αλλά είναι ωραίο να τις σχεδιάζετε, να τα σκεφτείτε όλα και να κερδίσετε πολλά χρήματα επειδή κάθεστε και βαριέστε τις περισσότερες φορές (πρέπει να πληρώσετε για αυτό αν είστε καλοί στο miss), εδώ είναι - Java, .Net. Πας να δουλέψεις σε κάποια τράπεζα, γράφεις, πας στη δουλειά στις εννιά με λευκό πουκάμισο, παίρνεις καλό μισθό και γράφεις σύμφωνα με τις συστάσεις των καλύτερων προγραμματιστών Java, .Net sheep και όλα αυτά...

Αν θέλετε να γράψετε κάποιες εφαρμογές, κάποιο είδος προγράμματος περιήγησης, κάποιο είδος παιχνιδιών ή κάτι άλλο, τότε η C++ είναι υπέροχη. Εάν θέλετε να γράψετε ιστότοπους, τότε είναι εδώ, οι γλώσσες της επιλογής σας (ο ομιλητής δείχνει Perl, Python, PHP, Ruby), δεν υπάρχει μεγάλη διαφορά. Το μόνο πράγμα είναι ότι η PHP θα πεθάνει πριν από την Python, οπότε αν τεμπελιάζετε να μάθετε νέα πράγματα, τότε μάθετε Python. Δεν θα παρατηρήσετε μεγάλη διαφορά, αλλά θα κρατήσετε περισσότερο.

Το τι συμβαίνει με τη Ruby είναι επίσης ασαφές. Λοιπόν, μπορείτε επίσης να κάνετε PHP εάν το έχετε ήδη μάθει, ευτυχώς είναι τόσο απλές που δεν χρειάζεται τόσο πολύς χρόνος για να ξαναμάθετε.

Και τέλος, υπάρχει ένας άλλος τομέας εφαρμογής των γλωσσών προγραμματισμού - αυτό είναι όταν ένας μη προγραμματιστής τις χρησιμοποιεί. Ας υποθέσουμε ότι είστε μαθηματικός, φυσικός, χημικός, αναλυτής, οποιοσδήποτε, και πρέπει να υπολογίσετε γρήγορα κάτι, να αναλύσετε ορισμένα δεδομένα (για τους βιολόγους, για παράδειγμα, πόσες αρκτικές αλεπούδες ζουν στα Commander Islands). Μπορείτε να τα βάλετε όλα αυτά σε έναν πίνακα στο Excel ή να τα αναλύσετε με κάτι. Η Python είναι επίσης καλή για αυτό, μπορεί να λειτουργήσει με κείμενο και υπάρχουν πολλές βιβλιοθήκες, στατιστικά και όλα αυτά. Εάν θέλετε να κάνετε κάποιο είδος Μηχανικής Μάθησης, να επεξεργαστείτε κάποια δεδομένα, να κάνετε προβλέψεις, τότε αυτό γίνεται και στην Python με τον πιο γρήγορο τρόπο τώρα. Είναι αλήθεια ότι πρέπει να σημειωθεί ότι τα καθήκοντα είναι πολύ διαφορετικά. Για παράδειγμα, αν θέλετε να κάνετε συναλλαγές στο χρηματιστήριο αμέσως σε συνθήκες όπου οι τιμές αλλάζουν συνεχώς, τότε ανεξάρτητα από το πόσο cool Machine Learning γράφετε στην Python, οι άνθρωποι που το έχουν γραμμένο σε κάτι πιο γρήγορο θα έχουν χρόνο να αγοράσουν τα πάντα πριν από τα πάντα θα μετρηθούν για εσάς, ακόμα κι αν οι αλγόριθμοί τους είναι χειρότεροι. Επομένως, ακόμη και αυτές οι εργασίες μηχανικής εκμάθησης (ορισμένες από αυτές) απαιτούν υψηλή απόδοση (και εξαιρετικά υψηλή απόδοση) και, κατά συνέπεια, άλλες γλώσσες.

Ο μόνος τρόπος για να καταλάβεις τι θέλεις είναι να δοκιμάσεις τα πάντα. Τώρα θα το πω ως ένα από τα οράματα για το πώς μπορείτε να δοκιμάσετε τα πάντα. Πώς να γίνετε προγραμματιστής και ευτυχισμένος; Ετσι. Ας ξεκινήσουμε με μια καθαρή πλάκα. Εδώ σπουδάζετε μαθηματικά, ρωσική γλώσσα και άλλα υποχρεωτικά και προαιρετικά μαθήματα στο σχολείο και οι γνώσεις σας στον τομέα του προγραμματισμού αντικατοπτρίζονται στον πίνακα (ο καθηγητής δείχνει έναν κενό πίνακα) αυτή τη στιγμή. Και θέλεις να γίνεις ένας ευτυχισμένος άνθρωπος, να κάνεις αυτό που αγαπάς, να κερδίσεις πολλά χρήματα και να μην αρνηθείς τίποτα στον εαυτό σου και να είσαι ευτυχισμένος.

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

Ποια είναι η κατάσταση με την εισαγωγή στο πανεπιστήμιο (σπουδάζετε αυτή τη στιγμή στο σχολείο); Όσο είστε στο σχολείο, πρέπει να καταλάβετε ότι το επόμενο βήμα είναι να εγγραφείτε και να το φροντίσετε. Περάστε την Ενιαία Κρατική Εξέταση ή κερδίστε την Ολυμπιάδα. Στις εξετάσεις Unified State Exam μπορείτε να χρησιμοποιήσετε Pascal, C++ (συμπεριλαμβανομένου του καθαρού C), Python (δεν θα τα αναφέρω περαιτέρω). Στην Ολυμπιάδα υπάρχει το ίδιο Pascal, η ίδια C++, η ίδια Python (θα μιλήσουμε τώρα για τα προβλήματά της) και, τις περισσότερες φορές, υπάρχει η Java. Υπάρχουν και άλλα πράγματα που συμβαίνουν ανάλογα με τους Ολυμπιακούς Αγώνες, αλλά δεν είναι αυτό το θέμα.

Πώς μοιάζει το γράφημα της κατανομής της γλώσσας στην Πανρωσική Ολυμπιάδα στην Πληροφορική; Οι άνθρωποι που συμμετέχουν στους Πανρωσικούς, πιο κουλ Ολυμπιακούς Αγώνες, τι γράφουν; Μοιάζει κάπως έτσι (εδώ σημαίνει Pascal, και εδώ είναι περίπου 2000, και εδώ είναι περίπου μηδέν, εδώ είναι C++ και εδώ είναι το 2015).

Το 2000, σχεδόν κανείς δεν έγραφε C++. Έχουν περάσει 15 χρόνια και σχεδόν κανείς δεν γράφει στο Pascal, παρά το γεγονός ότι ο Pascal είναι σύγχρονος. Αυτή είναι μια γλώσσα που μπορεί να κάνει σχεδόν τα πάντα το ίδιο. Απλώς όλοι έχουν γίνει πολύ τεμπέληδες για να μελετήσουν αυτό, κάθε νέα τάση, και συνεχίζουν να γράφουν τα πάντα στο Borland Pascal, το οποίο φυσικά δεν μπορεί να κάνει τίποτα. Στην C++, οι άνθρωποι γράφουν μερικούς αλγόριθμους (STL) για ταξινόμηση - υπέροχο, έγραψαν sort() και αυτό είναι. Στο Pascal, στο κανονικό, στο παλιό - αυτό είναι ένα πρόβλημα. Γράψαμε κάποιο είδος σετ (χρειαζόταν) - υπέροχο, το γράψαμε σε C++, αλλά στον Pascal ήταν και πάλι ένας πλήρης πόνος. Φυσικά, μπορείτε να το κάνετε αυτό με νέα Pascal, αλλά γενικά κοστίζουν χρήματα. Μπορεί να μην το έχετε προσέξει, αλλά είναι αλήθεια.

Υπάρχει και Java, αλλά η Java έχει πολλά γράμματα. Είναι για μεγάλα έργα, αλλά για μικρά προγράμματα μιας χρήσης αποδεικνύεται πολύ κακό, επειδή υπάρχουν πολλά επιπλέον γράμματα. Αλλά μερικοί άνθρωποι γράφουν επίσης, μπορείτε να μάθετε να γράφετε σε αυτό. Αλλά δεν είναι στις εξετάσεις του Ενιαίου Κράτους και η πλειοψηφία θα πρέπει ακόμα να δώσει την Εξεταστική Ενιαία Πολιτεία.

Τι είναι καλύτερο για την Ενιαία Κρατική Εξέταση; Για το Unified State Exam, είναι καλύτερο (αν δεν ξέρετε τίποτα και δεν σας διδάσκουν τίποτα στο σχολείο) να μάθετε Python. Μερικά προβλήματα εξετάσεων μπορούν να λυθούν τέλεια σε αυτό. Στην Ολυμπιάδα, γενικά, αποδεικνύεται ότι χρησιμοποιείται C++, γιατί η Python είναι πολύ αργή, δεν λύνονται όλα εκεί.

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

Θα μιλήσω τώρα για το πώς δομούμε το μάθημα στο HSE, με ποια σειρά διδάσκονται οι γλώσσες, πώς μελετώνται στα εφαρμοσμένα μαθηματικά και την επιστήμη των υπολογιστών στη Σχολή Εφαρμοσμένων Επιστημών, που κάνουμε μαζί με την Yandex. Στο πρώτο εξάμηνο - Python (όχι πλήρως, περίπου όπως πρέπει να μάθετε στο σχολείο) και C++ (ήδη ευρύτερο, πολύ ευρύτερο από ό,τι συνήθως διδάσκεται στα σχολεία). Να στο πω αμέσως για να μη φοβηθείς, αν θελήσεις ξαφνικά να γραφτείς, θα πεις: «Τι, τα ξέρω ήδη όλα αυτά, γιατί να πάω κάπου να σπουδάσω; Προτιμώ να πάω κάπου αλλού». Για όσους ήδη ξέρουν να προγραμματίζουν καλά, υπάρχει η ευκαιρία να προχωρήσουν αμέσως στη μελέτη αλγορίθμων και σε μια αρκετά θεωρητική προετοιμασία. Δεν τους εξετάζουμε τώρα, αυτό (δείχνει τον πίνακα) είναι για όσους είναι μεσαίους ή καθόλου προγραμματιστές.

Στο πρώτο εξάμηνο διδάσκονται τα βασικά της Python, μόνο και μόνο για να μάθουν οι άνθρωποι πώς να προγραμματίζουν και για να μην προσβληθεί κανείς πολύ. Η Python σπάνια διδάσκεται στα σχολεία. Κυρίως ακόμη και ο Πασκάλ, αν αυτό είναι μαζικό σχολείο. Λοιπόν, για να μην προσβληθεί κανείς, όλοι μαθαίνουν μια νέα γλώσσα (λες και είναι σε ίσες συνθήκες). Και η C++ απλά επειδή από τη C++ μπορείτε να πάτε οπουδήποτε.

Στη συνέχεια ακολουθεί το μάθημα Αλγόριθμοι και ένα ξεχωριστό πρόγραμμα μαθημάτων. Κλασικοί αλγόριθμοι με υλοποίηση. Δεν είναι ότι πήραμε κάτι στη θεωρία και υπολογίσαμε την πολυπλοκότητα. Στη διάλεξη το πήραμε, υπολογίσαμε την πολυπλοκότητα, στο σεμινάριο το πήραμε και εφαρμόσαμε τον αλγόριθμο. Ένα έργο είναι όπου οι μαθητές κάνουν κάτι ολοκληρωμένο. Για παράδειγμα, ένα από τα έργα ήταν: μετρήστε... Ας πούμε ότι έχετε πολλά διαμερίσματα στη Μόσχα και καταλαβαίνετε: «Α, έχω πολλά επιπλέον πράγματα, θα νοικιάσω μερικά. Και ορίζουν μια συγκεκριμένη τιμή και για κάποιο λόγο κανείς δεν θέλει να νοικιάσει ένα διαμέρισμα από εσάς - είναι πιθανώς πολύ ακριβό. Ή έβαλαν κάποια τιμή, σου την πήραν αμέσως και σκέφτεσαι: «Α, μάλλον το πούλησα φτηνά» - και στενοχωριέσαι κι εσύ. Δηλαδή, ήταν απαραίτητο να υπολογιστεί πόσο κοστίζει η ενοικίαση ενός διαμερίσματος; Εισαγάγετε τα δεδομένα - δημιουργεί μια εκτίμηση για εσάς. Ένας τέτοιος ιστότοπος, ο οποίος αποτελείται από πολλά πράγματα: πάρτε προτάσεις, αναλύστε τις, εφαρμόστε κάποιου είδους (πιθανώς) απλό αλγόριθμο μηχανικής εκμάθησης και δημιουργήστε ένα όμορφο web πρόσωπο στο οποίο μπορείτε να επιλέξετε κάτι, να εισαγάγετε κάτι, μερικά μέτρα, κάποιο αριθμό δωματίων , αριθμός σάουνων, αριθμός τζακούζι στο διαμέρισμά σας και υπολογίστε κατά προσέγγιση το κόστος. Δηλαδή, κάτι τελειωμένο, όχι πολύ περίπλοκο. Εδώ σημαίνει (ο εισηγητής δείχνει το μάθημα για τους αλγόριθμους) έναν τέτοιο πυρήνα C++, με I/O κονσόλας. Λοιπόν, εδώ (ο ομιλητής επισημαίνει την επιγραφή "project") κάτι υπό την καθοδήγηση ενός μέντορα, ίσως με βάσεις δεδομένων, ίσως με ανάλυση κειμένου και κάτι άλλο.
Στη συνέχεια, υπάρχει το τρίτο εξάμηνο - αυτό είναι ένα μάθημα που ονομάζεται "Συστήματα Υπολογιστών". Υπάρχει αρκετή γλώσσα assembly για να καταλάβεις (πολύ λίγο) και μετά κάτι παρόμοιο με καθαρή C και αλληλεπίδραση με λειτουργικά συστήματα, προγραμματισμός συστήματος στην ουσία. Και το έργο για το σεμινάριο είναι επίσης κάτι σχετικά με όλα τα είδη αλληλεπιδράσεων δικτύου, αρκετά χαμηλού επιπέδου: αναπτύξτε κάποιου είδους βοηθητικό πρόγραμμα, για παράδειγμα rsync (συγχρονισμός, ίσως ξέρετε. Σε καθαρή C, λίγο πολύ, γράψτε ένα ανάλογο του rsync, το οποίο θα έχετε μέσω του δικτύου να συγχρονίζει φακέλους με όλες τις προσβάσεις αρχείων και ούτω καθεξής).

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

Και μετά από δύο μαθήματα, οι άνθρωποι πηγαίνουν να κάνουν ό,τι τους ενδιαφέρει, γιατί αυτό το πράγμα καλύπτει τα βασικά του προγραμματισμού αρκετά ευρέως και μέχρι τότε οι άνθρωποι έχουν ήδη καταλάβει ότι δεν θέλουν να δουλέψουν με συστήματα υπολογιστών σε καμία περίπτωση (δεν το έκαναν όπως ο προγραμματισμός συστημάτων, για παράδειγμα ), αλλά θέλουν να δουλέψουν σε μερικούς θεωρητικούς αλγόριθμους, να υπολογίσουν την πολυπλοκότητα, να βρουν κάποια νέα πράγματα, διανεμημένα ή κάτι άλλο. Ή, αντίθετα, πιστεύουν ότι δεν έχουν πολλά εδώ ( ο καθηγητής δείχνει τη γραμμή του πρώτου μαθήματος με Python και C++) πήγε, τότε ( ο λέκτορας δείχνει την τρίτη γραμμή μαθημάτων, με προγραμματισμό συστημάτων) - όσο δεν σας αρέσει, μετρήστε byte και ορίστε κάθε είδους περιορισμούς στην ανάγνωση και τη γραφή, κάντε ροές, νήματα και κάτι άλλο. Και σύμφωνα με αυτό, οι άνθρωποι επιλέγουν μια κατεύθυνση και μελετούν. Δηλαδή, κατ 'αρχήν, για να μην αναπτύξετε "σύνδρομο παπάκι" - ήσασταν ο πρώτος που είδατε τον Pascal σας και τώρα είπατε "Ο Pascal είναι δύναμη". ή πιο προχωρημένο - είδατε τη C++ και αρχίσατε να μιλάτε για όλους ότι η C++ είναι δυνατή, αλλά όλα τα άλλα δεν είναι πολύ καλά.

Τώρα πρέπει να το δούμε αυτό (ο καθηγητής επισημαίνει τη λίστα των μαθημάτων στον πίνακα) ευρύτερα - αυτή είναι μια από τις μεθόδους που επιλέχθηκε, ιδιαίτερα στο HSE (εμφανίστηκε πρόσφατα, επομένως είναι αρκετά μοντέρνο). Υπάρχουν άλλοι τρόποι γνωριμίας. Σε άλλα καλά πανεπιστήμια η σειρά είναι λίγο διαφορετική και μπαίνουν άλλοι τόνοι. Αλλά προσπαθούν επίσης να μυήσουν τους ανθρώπους σε όλα όσα έχουν.

Πώς να αναζητήσετε δουλειά ως προγραμματιστής

είσαι ( ο λέκτορας δείχνει τη λίστα των μαθημάτων) έκανε τα πάντα, σπούδασε στο πανεπιστήμιο, έκανε κάτι άλλο για δύο χρόνια πιο παραγωγικά και πρέπει να πας στη δουλειά. Πώς να επιλέξετε κάτι για δουλειά; Πρώτον, έχεις εξοικειωθεί με τα πάντα, έχεις εμβαθύνει κάπου και ήδη ξέρεις τι αγαπάς. Πρέπει να επιλέξετε αυτό που αγαπάτε, φυσικά. Γιατί αν αγαπάς, καταβάλλεις προσπάθεια, θα έχεις κίνητρο και γενικά όλα θα πάνε καλά. Επειδή δεν έχει να κάνει μόνο με τα χρήματα, αλλά να τα κάνει ενδιαφέρουσα και ευχάριστη για εσάς. Λοιπόν, θέλεις να μπεις σε μια ωραία εταιρεία και να βρεις δουλειά. Τι είδους άτομο θα ήθελα να δω προσωπικά; Ας πούμε εκατό φοιτητές έρχονται σε μένα - να προσλάβω δύο ή έναν. Γιατί έρχονται, δεν καταλαβαίνω καθόλου, ποιοι είναι, τι είναι, πώς είναι; Στην καλύτερη περίπτωση, θα μου δείξουν το δίπλωμα που πήραν στο πανεπιστήμιο και θα πω: "Ουάου!" Αυτό είναι ένα ωραίο δίπλωμα, αλλά αυτό δεν είναι τόσο ωραίο!». Και μπορεί να κάνω λάθος, παρεμπιπτόντως. Ίσως το άτομο να είχε πολύ ελεύθερο χρόνο και να έμαθε πολύ καλύτερα.

Τι θα ήταν υπέροχο; Πρώτον, κάποιο έργο ανοιχτού κώδικα που γράψατε από την αρχή μέχρι το τέλος. Κατά προτίμηση, εάν φτιάχνω κάποιο είδος υποδομής ώστε τα δεδομένα να διαβάζονται γρήγορα ή κάτι άλλο, τότε, φυσικά, θα με ενδιέφερε να γράψω κάτι ανοιχτού κώδικα για μένα. Δεν έφτιαξαν έναν ιστότοπο, αλλά κάτι σχετικά με το θέμα. Γιατί με ενδιαφέρει αυτό; Μπορώ να κοιτάξω τον κώδικά σας, μπορώ να δω πόσο συχνά κάνατε δέσμευση, μπορώ να δω πώς απαντήσατε σε σφάλματα από χρήστες, σφάλματα από προγραμματιστές που τον χρησιμοποιούν - όλα καταγράφονται, κοιτάζω τα πάντα και σκέφτομαι: "Ουάου, αυτό το σφάλμα έχει Δεν ήμουν εκεί για δύο χρόνια τώρα κλειστό, εδώ απάντησες αγενώς στον χρήστη, ιδού κάτι άλλο - δεν θα το πάρω." Δηλαδή, αυτό είναι το προσωπικό σας έργο.

Στη συνέχεια, τι άλλο θα ήταν ωραίο; Θα ήθελα να δω πώς κάνατε την ομαδική δουλειά. Δηλαδή, έρχεσαι σε μένα για συνέντευξη και μου λες: «Τα παιδιά από το πανεπιστήμιο κι εγώ έχουμε κάνει μια καλή αίτηση. Έφτιαχνα μια βάση δεδομένων εκεί, έφτιαχναν κάποιο είδος εφαρμογής για κινητά εκεί, και είχαμε επίσης έναν τύπο που εργαζόταν εκεί, ένα κορίτσι σχεδιαστή, ένα αγόρι με τεχνική υποστήριξη. Ήμασταν πέντε και κάναμε ένα ωραίο έργο». Λοιπόν, βλέπω ότι είναι πραγματικά το έργο σου, λέω: "Ποιο είναι το δικό σου;" Κοιτάζω ξανά τον κώδικα και καταλαβαίνω ότι ξέρεις να δουλεύεις ομαδικά με ανθρώπους.

Προγραμματιστής δεν είναι κάποιος που κάθεται μόνος (indie) σε ένα γκαράζ, κάπου με σβηστά φώτα, δεν μιλάει σε κανέναν, αφήνει γένια και γράφει. Υπάρχει ακόμα κάποια αλληλεπίδραση με τους ανθρώπους. Με ένα αφεντικό, για παράδειγμα, που μπορεί μερικές φορές να σε βρίζει (τα αφεντικά, έτσι είναι, δεν είναι πάντα ευγενικά). Και βλέπω ότι ξέρεις να δουλεύεις με ανθρώπους και με κάνει χαρούμενο αν έχεις κάποιο είδος καλής ομάδας. Ακόμα κι αν δεν είναι καλό, είναι καλύτερο από το να μην έχεις.

Τι άλλο θα ήθελα προσωπικά; Αν αποδείχτηκες σε μεγάλα έργα. Για παράδειγμα, δεσμεύσατε κάτι στον πυρήνα του Linux, εάν ασχολείστε με τον προγραμματισμό συστημάτων, και διορθώσατε κάποιο σφάλμα. Δηλαδή, έδειξαν ότι ξέρεις πώς να διαβάζεις τον κώδικα κάποιου άλλου και ξέρεις πώς να κάνεις κάποιες αλλαγές σε αυτόν. Κοιτάζω: "Ω, πραγματικά, καταλάβατε κάτι περίπλοκο και διορθώσατε μερικά σφάλματα!" Και αρχίζω να χαίρομαι πολύ για αυτό. Επειδή έχω... καλά, δεν ξέρω... ο προγραμματιστής μου παραιτήθηκε επειδή οι ανταγωνιστές του του πρόσφεραν υψηλότερο μισθό και χρειάζομαι επειγόντως κάποιον να γεμίσει τη θέση του - μαζί σας. Βλέπω ότι έγραψες μόνο από την αρχή, αλλά δεν ξέρεις πώς να διαβάζεις και να επεξεργάζεσαι τον κώδικα κάποιου άλλου και στενοχωριέμαι.

Και τέλος, ανάλογα με τη συγκεκριμένη θέση, υπάρχουν διάφορα άλλα πράγματα. Εάν πιάνετε δουλειά ως αναλυτής, θα ήθελα να λύσετε προβλήματα ανάλυσης δεδομένων στο Kaggle. Εάν κάνετε αίτηση για κάποια αλγοριθμικά πράγματα, θα ήθελα να κάνετε μερικούς αλγόριθμους στον αθλητικό προγραμματισμό. Και τέλος, αν έχετε σκεφτεί το επάγγελμα, διαβάστε πώς γίνονται οι συνεντεύξεις, έχετε δει ότι κάποιοι εκεί εκφράζουν μεγάλη δυσαρέσκεια: «Ήρθα, και με ρώτησαν ποιο είναι το χόμπι μου. Κάθομαι σαν κουκουβάγια και δεν απαντώ γιατί δεν έχω χόμπι» και νομίζουν ότι αυτό το κάνουν οι HR. Στην πραγματικότητα, προσπαθούν να καταλάβουν πόσο φιλικοί και επαρκείς είστε. Εάν είστε εχθρικοί και ανεπαρκείς, τότε ανεξάρτητα από το πόσο ιδιοφυΐα και εργασιομανής είστε, ένας σκληρός ειδικός με μεγάλες γνώσεις, θα είναι δύσκολο για την ομάδα να συνεργαστεί μαζί σας και δεν θα μπορείτε να ολοκληρώσετε το έργο μόνοι σας. Επιπλέον, ακόμα κι αν το βγάλεις, μπορείς να φανταστείς ποιο είναι το βάρος για την εταιρεία. Κι αν έρθεις αύριο και πεις: «Αύξησε το μισθό μου 10 φορές, αλλιώς θα σε αφήσω». Είναι σαφές ότι οι εταιρείες δεν θέλουν να βρεθούν σε μια τέτοια κατάσταση. Επομένως, η καλλιέργεια της επάρκειας και της καλής θέλησης στον εαυτό του είναι εξίσου σημαντική (τουλάχιστον) με την ανάπτυξη κάποιων επαγγελματικών δεξιοτήτων.

Για να συνοψίσουμε, τι να πούμε; Ποιες γλώσσες είναι καλές και ποιες κακές; Λοιπόν, μέσα σε μια συγκεκριμένη ομάδα γλωσσών, για παράδειγμα μεταξύ Ruby, Python και PHP, τι πρέπει να επιλέξετε; Φυσικά, η σωστή απάντηση είναι η Python, αλλά στην πραγματικότητα η διαφορά μεταξύ τους είναι στον αριθμό των επιτρεπόμενων σφαλμάτων, στον αριθμό κάτι άλλο - 5%, καλά, ίσως 10%. Δηλαδή, εάν έχετε ήδη ένα έτοιμο έργο γραμμένο σε PHP, τότε κανείς δεν θα έλεγε καλά: «Ας ξαναγράψουμε τα πάντα στην Python». Θα πουν: "Ας προσλάβουμε περισσότερους προγραμματιστές PHP και ας συνεχίσουμε να γράφουμε σε PHP." Τέλεια, είναι μια καλή επιλογή. Είναι σαφές ότι αν ξαφνικά αποφασίσετε να γράψετε κάποιο είδος έργου, τότε ίσως είναι συνετό να επιλέξετε τώρα την Python. Αν και εξαρτάται κι αυτό. Ίσως έχετε πολλούς φτηνούς προγραμματιστές PHP στην αγορά, και αυτοί της Python είναι ακριβοί και σκέφτεστε: "Ναι, η τεχνολογία είναι πιο δροσερή, αλλά θα εξοικονομήσω χρήματα σε έτοιμους προγραμματιστές." Και όλα είναι υπέροχα, έρχεσαι ήδη και δουλεύεις εκεί.
Πώς να επιλέξετε μεταξύ Java και C++; Ναι, περίπου το ίδιο συμβαίνει. Νομίζω ότι μέχρι να αποφασίσετε σε ποια γλώσσα θα ξεκινήσετε ένα νέο μεγάλο έργο, θα έχετε αποκτήσει γνώσεις στον επαγγελματικό σας τομέα και θα είστε σε θέση να κάνετε τη σωστή επιλογή. Τώρα δεν χρειάζεται να κάνετε αυτή την επιλογή ακόμα, και γι' αυτό σας συμβουλεύω να κάνετε ό,τι θέλετε.

Τα βασικά, όπως είπα ήδη, τα πολύ, πολύ βασικά του προγραμματισμού (τι είναι συνάρτηση, τι είναι if’ics, for’ics, πίνακες, κάτι άλλο) μπορούν να μάθουν λίγο πολύ σε οποιαδήποτε γλώσσα. Για παράδειγμα, στη C++, καθώς υπάρχουν πολλές ομοιότητες με αυτό, και υπάρχουν οι λιγότερες ιδιαιτερότητες σε αυτό (σε αυτό το επίπεδο), και υπάρχουν τα λιγότερα επιπλέον γράμματα για να γραφτούν. Λοιπόν, όταν μάθετε κάποια περίπλοκα αρχιτεκτονικά πράγματα, θα μάθετε και δεν χρειάζεται να ανησυχείτε πολύ για αυτό. Δηλαδή, το κυριότερο είναι να προσπαθήσεις, να ψάξεις αυτό που σου αρέσει και όταν καταλάβεις ότι είναι ήδη 4 η ώρα το πρωί, και κάθεσαι και γράφεις για πλάκα, γιατί σου αρέσει - μάλλον εκείνη τη στιγμή είναι ξεκάθαρο ότι βρήκες το δικό σου.

    Λίστες γλωσσών προγραμματισμού Ανά κατηγορία Χρονολογικά Γενεαλογικά Παρέχεται λίστα γλωσσών προγραμματισμού ομαδοποιημένες ανά κατηγορία. Ορισμένες γλώσσες εμπίπτουν σε περισσότερες από μία κατηγορίες. Περιεχόμενα... Wikipedia

    Λίστες γλωσσών προγραμματισμού Ανά κατηγορία Χρονολογικά Γενεαλογικά Παρέχεται ένας γενεαλογικός κατάλογος γλωσσών προγραμματισμού. Οι γλώσσες ταξινομούνται σύμφωνα με τις προηγούμενες γλώσσες που είχαν ισχυρή επιρροή στη διαμόρφωση της ... Wikipedia

    Περιεχόμενα 1 Κατά κατασκευαστή ή πλατφόρμα 1.1 Flash 1.2 Java 1.3 Microsof ... Wikipedia

    Λίστες Γλωσσών Προγραμματισμού Ανά Κατηγορία Χρονολογικό Γενεαλογικό Χρονολόγιο Γλωσσών Προγραμματισμού είναι μια χρονολογικά οργανωμένη λίστα γλωσσών προγραμματισμού. Περιεχόμενα... Βικιπαίδεια

    Αυτό το άρθρο πρέπει να έχει Wikified. Μορφοποιήστε το σύμφωνα με τους κανόνες μορφοποίησης του άρθρου. Συμβάσεις... Βικιπαίδεια

    Αυτή η σελίδα είναι μια ενημερωτική λίστα. Γλώσσες προγραμματισμού .NET (CLI-enabled languages ​​ή CLI languages) γλώσσες προγραμματισμού υπολογιστών που χρησιμοποιούνται για τη δημιουργία βιβλιοθηκών και προγραμμάτων που ικανοποιούν τις απαιτήσεις της Comm ... Wikipedia

    Κύριο άρθρο: Πρόγραμμα επεξεργασίας κειμένου Λίστα προγραμμάτων επεξεργασίας κειμένου των Windows και πίνακας σύγκρισης. Περιεχόμενα 1 Συγκριτικός πίνακας διάσημων επεξεργαστών κειμένου ... Wikipedia

    Η γλώσσα προγραμματισμού C# είναι μια από τις πιο δημοφιλείς γλώσσες προγραμματισμού σήμερα. Ανοικτό λογισμικό Paint.NET για επεξεργασία γραφικών ράστερ SharpDevelop ανοιχτό IDE για C#, Visual Basic .NET (VB.NET), Boo ... Wikipedia

    Αυτή είναι μια λίστα λογισμικού που αναπτύχθηκε από το Ίδρυμα Ελεύθερου Λογισμικού ως μέρος του έργου GNU UNIX, ενός παρόμοιου λειτουργικού συστήματος που αποτελείται εξ ολοκλήρου από ελεύθερο λογισμικό. Τα περισσότερα από αυτά τα πακέτα επίσης... ... Wikipedia

    Αυτό το άρθρο ή ενότητα χρειάζεται αναθεώρηση. Βελτιώστε το άρθρο σύμφωνα με τους κανόνες γραφής άρθρων... Wikipedia

Βιβλία

  • Python για παιδιά. Εκμάθηση προγραμματισμού από τον Jason Briggs. Σχετικά με το βιβλίο Αυτό το βιβλίο είναι ένα σεμινάριο για μια από τις πιο δημοφιλείς γλώσσες προγραμματισμού σήμερα - την Python. Ξεκινώντας με τα πιο απλά βήματα, βήμα βήμα θα γράψετε το δικό σας...
  • JavaScript για παιδιά. Οδηγός Προγραμματισμού, Morgan Nick. Σχετικά με το βιβλίο Αυτό το βιβλίο θα σας επιτρέψει να βουτήξετε στον προγραμματισμό και να κυριαρχήσετε στο JavaScipt με ευκολία. Θα γράψετε πολλά αληθινά παιχνίδια - αναζήτηση θησαυρών στο χάρτη, "Δημιόμος" και "Φιδάκι". Σε κάθε...


Συνιστούμε να διαβάσετε

Κορυφή