Τα σημερινά στατιστικά

Ολοκληρωμένες ασκήσεις
-
Πληκτρολογημένοι χαρακτήρες Δακτυλογραφημένες λέξεις
-
Χρόνος εξάσκησης
-

Γενικά στατιστικά στοιχεία

Ολοκληρωμένες ασκήσεις
-
Πληκτρολογημένοι χαρακτήρες Δακτυλογραφημένες λέξεις
-
Χρόνος εξάσκησης
-

Μαθήματα πληκτρολόγησης
για προγραμματιστές

  • Διάφορες γλώσσες προγραμματισμού
  • Παρενθέσεις, τελεστές και λέξεις-κλειδιά

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

Μαθήματα τυφλού συστήματος γραφής για προγραμματιστές

πρόοδος
λέξεις/λεπτό / ακρίβεια
επίπεδο
1. Προγραμματισμός σε Python
-
-
2. Προγραμματισμός σε JavaScript
-
-
3. Προγραμματισμός σε Java
-
-
4. Προγραμματισμός σε C++
-
-
5. Προγραμματισμός σε C#
-
-
6. Προγραμματισμός σε Go
-
-
7. Προγραμματισμός σε PHP
-
-
8. Προγραμματισμός σε SQL
-
-
9. Προγραμματισμός σε Bash
-
-

Εξασκήσου στο τυφλό σύστημα με παραδείγματα από γλώσσες προγραμματισμού

Τυφλό σύστημα γραφής στον προγραμματισμό

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

Γιατί το τυφλό σύστημα γραφής είναι σημαντικό για προγραμματιστές

Σε αντίθεση με ένα συνηθισμένο κείμενο, ο κώδικας ακολουθεί συγκεκριμένη δομή και σύνταξη. Δεν μπορείς να βασιστείς στον μεταγλωττιστή ή στον διερμηνέα για να μαντέψει την πρόθεσή σου αν εισαγάγεις λάθος χαρακτήρα. Ένα τυπογραφικό λάθος μπορεί να προκαλέσει συντακτικό σφάλμα ή να αλλάξει το νόημα του προγράμματος, ακόμη κι αν ο κώδικας παραμένει έγκυρος. Γι' αυτό η εξάσκηση στη γρήγορη πληκτρολόγηση πρέπει να περιλαμβάνει και την ακρίβεια· η μεγαλύτερη ταχύτητα δεν εγγυάται λιγότερες διορθώσεις. Με το τυφλό σύστημα γραφής κρατάς το βλέμμα στον επεξεργαστή και ψάχνεις λιγότερο τα πλήκτρα. Ο έλεγχος της λογικής και η επίλυση προβλημάτων παραμένουν ξεχωριστές εργασίες.

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

Γλώσσες ανά πρόκληση πληκτρολόγησης

Κάθε γλώσσα ζητά κάτι διαφορετικό από τα δάχτυλά σου. Από την οπτική του τυφλού συστήματος γραφής, έχει νόημα να τις ομαδοποιούμε με βάση τις ακολουθίες πλήκτρων που χρησιμοποιείς, όχι με βάση τα προγραμματιστικά παραδείγματα, όπως ο αντικειμενοστραφής ή ο συναρτησιακός προγραμματισμός. Το AgileFingers προσφέρει εξάσκηση σε Java, JavaScript, C++, C#, Go, PHP, SQL, Bash και Python. Οι διαφορές με μια ματιά:

Γλώσσες με συχνή χρήση άγκιστρων (Java, JavaScript, C++, C#, Go)
Αυτές οι γλώσσες χρησιμοποιούν συχνά άγκιστρα {} και παρενθέσεις. Στις Java, C++ και C# οι εντολές συνήθως τελειώνουν με το σύμβολο του semicolon, που έχει τη μορφή του ελληνικού ερωτηματικού. Η Go εισάγει αυτόματα τα περισσότερα semicolons, ενώ η JavaScript επιτρέπει την παράλειψή τους σε πολλές περιπτώσεις. Αυτά τα σύμβολα σχηματίζουν τον σκελετό του κώδικα. Η αναζήτηση των πλήκτρων κατά την πληκτρολόγηση διακόπτει την εργασία σου. Παράδειγμα σε Java:


public class Greeter {
    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            System.out.println("Γεια " + i);
        }
    }
}

Ή σε C#, με σύνταξη εκτενή αλλά συνεπή:


for (int i = 0; i < 10; i++) {
    Console.WriteLine($"Τιμή: {i}");
}

Η γρήγορη πληκτρολόγηση τέτοιων βρόχων θέλει άνεση με άγκιστρα, παρενθέσεις και τελεστές. Στο C++ θα συναντήσεις τελεστές δεικτών (*, ->), ενώ η Go απλοποιεί τη σύνταξη αλλά χρησιμοποιεί επίσης άγκιστρα. Η εξάσκηση αυτών των ακολουθιών στο AgileFingers σε βοηθά να αποκτήσεις μεγαλύτερη άνεση στην πληκτρολόγησή τους.

Γλώσσες σεναρίων και ερωτημάτων (Bash, PHP, SQL)
Οι γλώσσες σεναρίων είναι γεμάτες σύμβολα. Στο Bash χρησιμοποιείς συχνά pipes (αγγλ. «pipe» - |), ανακατευθύνσεις και το $:


for file in *.txt; do
  echo "Επεξεργασία $file"
done

Στην PHP οι μεταβλητές γράφονται με το σύμβολο $ στην αρχή. Όταν ενσωματώνεις PHP σε HTML, στο αρχείο εναλλάσσονται ετικέτες HTML και κώδικας με σύνταξη παρόμοια με της C. Στην SQL μεγαλύτερη έμφαση έχουν οι λέξεις-κλειδιά που σχηματίζουν τα ερωτήματα:


UPDATE users
SET active = 0
WHERE last_login < NOW() - INTERVAL '30 days';

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

Γλώσσες που βασίζονται σε εσοχές (Python)
Η Python είναι ιδιαίτερη, επειδή οι εσοχές αποτελούν μέρος της σύνταξης. Η έλλειψη κενού ή η παράλειψη άνω-κάτω τελείας μπορεί να «σπάσει» το πρόγραμμα. Το μοτίβο πληκτρολόγησης είναι σαφές: if ...:, νέα γραμμή, εσοχή. Για παράδειγμα:


def factorial(n):
    if n == 0:
        return 1
    return n * factorial(n - 1)

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

Άλλες γλώσσες προγραμματισμού
Πέρα από τις ήδη υποστηριζόμενες, οι Rust, Kotlin, Swift και Haskell έχουν δικές τους ιδιαιτερότητες. Η Rust δίνει έμφαση στην ασφάλεια μνήμης με borrowing (&) και lifetimes ('a). Η Kotlin χρησιμοποιεί εκφράσεις λάμδα και βέλη στους τύπους συναρτήσεων. Η Swift συνδυάζει γνώριμη C-σύνταξη με σύγχρονη εκφραστικότητα. Η Haskell απαιτεί προσεκτικές εσοχές και κάνει εκτενή χρήση συμβολικών τελεστών. Όποια κι αν είναι η γλώσσα, το τυφλό σύστημα γραφής σε βοηθά να διαχειρίζεσαι αποτελεσματικά αυτά τα σημεία.

Προγραμματισμός σε κατάσταση flow

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

Αυτόματη συμπλήρωση κώδικα

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

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

Εργασία με IDE και editors

Ένα ολοκληρωμένο περιβάλλον ανάπτυξης (αγγλ. Integrated Development Environment, IDE) είναι κάτι παραπάνω από editor: συνδυάζει επεξεργασία, debugging, refactoring, testing και διαχείριση έργου σε ένα εργαλείο. Παραδείγματα: IntelliJ IDEA, PyCharm, Rider. Προσφέρουν ισχυρές υποδείξεις, ανίχνευση λαθών και προηγμένη πλοήγηση. Η άνεση στην πληκτρολόγηση είναι χρήσιμη όταν γράφεις και αλλάζεις κώδικα. Πολλές συνηθισμένες εντολές είναι διαθέσιμες μέσω συντομεύσεων πληκτρολογίου, αλλά η χρήση ποντικιού και πληκτρολογίου εξαρτάται από την εργασία και τις συνήθειές σου.

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

Στο μεταίχμιο IDE και editor βρίσκεται το Visual Studio Code. Κάποιοι το αποκαλούν IDE, τεχνικά όμως είναι προηγμένος editor. Με τα σωστά plugins γίνεται εξαιρετικά δυνατό. Οι επεκτάσεις προσομοίωσης του Vim προσθέτουν τις συντομεύσεις του στο VS Code. Η υποστήριξη Git είναι ενσωματωμένη στον επεξεργαστή, ενώ άλλες επεκτάσεις προσφέρουν περιήγηση σε βάσεις δεδομένων ή linting (αγγλ. «linting»). Το τυφλό σύστημα γραφής είναι χρήσιμο για την εισαγωγή και την αλλαγή κώδικα, αλλά η χρησιμότητα των εργαλείων εξαρτάται επίσης από τον τρόπο με τον οποίο τα αξιοποιείς στη συγκεκριμένη εργασία.

Neovim - η ισχύς ενός editor με επίκεντρο το πληκτρολόγιο

Το Neovim είναι σχεδιασμένο για εργασία με το πληκτρολόγιο, αλλά υποστηρίζει επίσης ποντίκι και μπορεί να χρησιμοποιηθεί μέσω γραφικού περιβάλλοντος. Οι εντολές του επιτρέπουν ακριβείς αλλαγές: dd διαγράφει μια γραμμή, ciw αλλάζει μια λέξη και :%s/foo/bar/g αντικαθιστά κείμενο σε όλο το αρχείο. Για την πλοήγηση μπορείς, για παράδειγμα, να χρησιμοποιήσεις το 42G, που σε μεταφέρει κατευθείαν στη γραμμή 42. Το τυφλό σύστημα γραφής βοηθά στην εισαγωγή εντολών και κώδικα. Χρειάζεται επίσης να μάθεις τις ίδιες τις εντολές, χρησιμοποιώντας τες σε συγκεκριμένες εργασίες επεξεργασίας.

Το οικοσύστημα plugins (αγγλ. «plugins») κάνει το Neovim ευέλικτο: telescope.nvim για αναζήτηση, coc.nvim ή nvim-cmp για συμπλήρωση, fugitive.vim για Git. Αυτές οι πρόσθετες λειτουργίες δίνουν στον επεξεργαστή εντολές αναζήτησης, συμπλήρωσης και διαχείρισης εκδόσεων. Αν προτιμάς να δουλεύεις με το πληκτρολόγιο, μπορείς να μάθεις τις συντομεύσεις τους μαζί με τις εντολές επεξεργασίας του Neovim και να χρησιμοποιείς το τυφλό σύστημα γραφής κατά την εισαγωγή κώδικα.

Μηχανικά πληκτρολόγια και άνεση στον προγραμματισμό

Μετά από χρόνια προγραμματισμού συνειδητοποιείς ότι το πληκτρολόγιο είναι μέρος του τρόπου δουλειάς σου. Τα μηχανικά πληκτρολόγια χρησιμοποιούν ξεχωριστούς μηχανικούς διακόπτες και προσφέρουν διαφορετική αίσθηση στο πάτημα. Η άνεση στη διάρκεια της εργασίας εξαρτάται από το συγκεκριμένο μοντέλο, τη θέση του και τις συνήθειές σου. Μπορείς να επιλέξεις τύπους διακοπτών που συχνά προσδιορίζονται με χρώματα όπως red, blue ή brown. Διαφέρουν στην απαιτούμενη δύναμη, στην απτική ανάδραση και στον ήχο, γι' αυτό εξετάζεις τις ιδιότητες κάθε μοντέλου. Έτσι προσαρμόζεις την αίσθηση στις προτιμήσεις σου. Το τυφλό σύστημα γραφής μπορείς να το εξασκείς σε πληκτρολόγιο που σε βολεύει. Οι μηχανικοί διακόπτες από μόνοι τους δεν εγγυώνται λιγότερη κόπωση ή μεγαλύτερη ακρίβεια· η θέση των χεριών και τα διαλείμματα επηρεάζουν επίσης την άνεση.

Ο ρόλος της ΤΝ και η διατήρηση δεξιοτήτων

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

Η ΤΝ μπορεί να είναι χρήσιμη στον επαναλαμβανόμενο κώδικα (αγγλ. «boilerplate») ή στις εκτυπώσεις για αποσφαλμάτωση, όπως print και console.log. Ακόμη και τότε, εσύ αποφασίζεις τι θα εκτυπώνεται και πού, και ελέγχεις τον προτεινόμενο κώδικα. Ανάλογα με την εργασία, γράφεις κώδικα, τον αλλάζεις ή εξετάζεις προτάσεις· όλα αυτά αποτελούν μέρος της δουλειάς του προγραμματιστή. Το τυφλό σύστημα γραφής είναι χρήσιμο στη χειροκίνητη εισαγωγή και στις διορθώσεις. Το AgileFingers προσφέρει εξάσκηση με λέξεις-κλειδιά και σύμβολα σε παραδείγματα κώδικα, για να δουλεύεις την ταχύτητα και την ακρίβεια πληκτρολόγησης. Τη γνώση της γλώσσας και του σχεδιασμού την αναπτύσσεις με μελέτη και δικά σου έργα.

Επίλογος

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

Το AgileFingers προσφέρει μαθήματα προγραμματισμού με αποσπάσματα κώδικα σε Java, Python, Go και άλλες γλώσσες. Επαναλαμβάνοντας τα πατήματα των πλήκτρων στα παραδείγματα, εξασκείς την ταχύτητα και την ακρίβεια πληκτρολόγησης και αναπτύσσεις μυϊκή μνήμη για συνηθισμένα σύμβολα και ακολουθίες πλήκτρων. Εξοικειώνεσαι έτσι με τη γραφή του κώδικα, αλλά η κατανόηση της λειτουργίας του απαιτεί μελέτη της γλώσσας και δουλειά σε δικά σου έργα. Ακόμη και όταν εργαλεία παράγουν ή συμπληρώνουν κώδικα, το τυφλό σύστημα γραφής παραμένει χρήσιμο για τις δικές σου αλλαγές και διορθώσεις.

λέξεις ανά λεπτό χαρακτήρες ανά λεπτό λέξεις/λεπτό χαρακτ./λεπτό λέξεις/λεπτό χαρακτ./λεπτό Διάγραμμα /ergasia-gia-to-spiti /ergasia-stin-taxi /in-class-assignment