NuShell ένα κέλυφος αντικαταστάτης του Bash από το μέλλον

Οι διάφοροι φλοιοί (shell ή αλλιώς κέλυφος) είναι μαζί μας εδώ και πολλές δεκαετίες. Τι είναι φλοιός κατ αρχήν; Είναι το πρόγραμμα που τρέχει αυτό που λέμε τερματικό. Το παρακάτω άρθρο εξηγεί τι είναι. Όταν γράφουμε εντολές στο τερματικό στην πραγματικότητα χρησιμοποιούμε το Bash, αν και κάποιοι ποιο ψαγμένοι έχουν το zsh.

Η αρχική φιλοσοφία του UNIX λέει πως αν έχεις μικρά προγράμματα που τα συνδέεις με διοχετεύσεις (pipes) μπορείς να κάνεις πολύπλοκες εργασίες. Με απλές εντολές όπως ή ls και η cat σε συνδυασμό με φίλτρα όπως την εντολή grep ή υπερφίλτρα όπως το awk και ένα καλό κέλυφος να τα συνδέσει μπορείς να φτιάξεις μικρά προγράμματα είτε στην γραμμή εντολών, είτε να φτιάξεις μικρές εντολές.

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

Υπάρχει κάποιος που ξέρει απέξω και τις 58 επιλογές της εντολής ls; τις 82 επιλογές της εντολής find; εγώ πάντως όχι. Και σαν να μην έφτανε αυτό οι διάφορες εκδόσεις του UNIX είναι ασύμβατες μεταξύ τους, οπότε είτε γράφεις στις περιορισμένες δυνατότητες της προδιαγραφής POSIX και ελπίζεις να μην πέσεις σε κάποια ασυμβατότητα, είτε χρησιμοποιείς τα GNU Coreutils και ξεμπέρδεψες.

Το άλλο πρόβλημα είναι πως αυτό που περνάει από εντολή σε εντολή είναι απλό κείμενο χωρίς δομή, κάτι που κάνει τα πράγματα δύσκολα. Πρέπει να μείνουμε όμως για πάντα στο παρελθόν; Η απάντηση είναι πως δεν μπορείς να αντικαταστήσεις τα GNU Coreutils, τα πάντα θα παύσουν να λειτουργούν. Μπορείς όμως να φτιάξεις κάτι καλύτερο. Και εδώ δυο προγραμματιστές πολύ γνωστοί, ο τεράστιος Yehuda Katz και ο Jonathan Turner έχουν να μας δώσουν μια ενδιαφέρουσα πρόταση. Το όνομα αυτής NuShell, ένα καινούργιο σύστημα γραμμένο σε Rust.

https://www.nushell.sh/

Μπορείς να το κατεβάσεις από το αποθετήριο σαν αρχείο zip, δεν υπάρχουν έτοιμα πακέτα αυτή την στιγμή, αλλά υπάρχει όμως ένα docker image. Εγώ ακολούθησα τον δρόμο του cargo και το πέρασα με το χέρι, και 855 crates αργότερα (θα το μετανιώσω αυτό στο μέλλον είμαι σίγουρος) ήρθε ή ώρα να δώσω την πρώτη εντολή ls

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

με αντίστροφή ταξινόμηση ως προς το μέγεθος. Είμαι σίγουρος πως θα μπορούσα να κάνω το ίδιο και με την “απλή” εντολή ls αν ήξερα εκ μνήμης και τις 58 επιλογές της, ή μήπως θα ήθελα και την εντολή sort;

Αν ήθελα μόνο τα αρχεία μεγαλύτερα από ένα συγκεκριμένο μέγεθος;

ls | where size > 1GB

Η εντολή ps μου δείχνει τις διεργασίες(προγράμματα) που τρέχουν. Αλλά ποιες από αυτές χρησιμοποιούν πολύ μνήμη; Με αυτά που είδαμε μέχρι τώρα είναι εύκολο να το βρούμε

Τόσο απλά σαν να κλέβεις εκκλησία. Ας δούμε πως μπορείς να βρεις πληροφορίες για το σύστημα:

Εδώ έχουμε μια ποιο πολύπλοκη δομή, αλλά μπορούμε να μπούμε μέσα στις υποδομές ή τους πίνακες και να δούμε τις πληροφορίες

image

Δομημένα δεδομένα μπορούμε να πάρουμε εκτός από εντολές και απευθείας από κάποια αρχεία, όπως για παράδειγμα αχρεία json (το λιγουρεύεστε ή όχι ακόμα;) Για παράδειγμα απο ένα αρχείο *.desktop.

ή ακόμα και απο το internet (δυστυχώς όχι RSS feeds ακόμα)

fetch https://www.jonathanturner.org/feed.xml

Ωραία όλλα αυτά, αλλά αν απλά θέλω την παλία καλή εντολή ls ;

/home/talos> ^ls
Builds		    Desktop    eBooks			       Music	  Public     Videos
CLionProjects	    Documents  Games			       notes.txt  Steam
croc_completed.odt  Downloads  java_error_in_clion_215865.log  Pictures   Templates

Μπορεί να αντικαταστήσει Shell που χρησιμοποιώ;
Κάποιες γεναίες ψυχές το χρησιμοποιούν ήδη, και ναι μπορεί να χρησιμοποιήθει, αλλά οι χρήστες του Bash, είδικά αυτοί που ξέρουν πάνω απο 10 όρισματα της εντολής ls θα πρέπει να ξεχάσουν την μυική μνήμη. Εδώ θα βρείτε μια αντιστοιχία εντολών του nu και το bash. Πιστεύω πως είναι ευκολότερο να το μάθεις απο την παραδοσιακή γραμμή εντολών, αλλά είναι νωρίς ακόμα και δεν θα βρείς βιβλία ή οδηγούς. Αλλά είναι νωρίς ακόμα. Αυτή την στιγμή είναι όμως ένα χρήσιμο εργαλείο, ειδικά αν δουλεύεις με αρχεία json. Αλλά σε 2-3 χρόνια ίσως να γίνει η καλύτερη λύση. Θα δείξει. Εσάς ποια είναι η γνώμη σας; Το λιγουρεύεστε να το δοκιμάσετε σήμερα;

Δείτε και διαβάστε

Επίσης την κεντρική σελίδα του Nushell, το πολύ καλό βιβλίο του ή ενα demo χωρίς να το εγκαταστήσετε.

4 «Μου αρέσει»

Βασικά… PowerShell αλλά πιο Unix-y?

Τα παραδείγματα αντίστοιχα σε PS είναι

dir | sort-object length -descending
dir | where length -gt 1GB
gps | where workingset -gt 200MB
1 «Μου αρέσει»

Δεν μπορώ να σου απαντήσω σε αυτή την ερώτηση, καθώς δεν έχω ιδέα από PowerShell. Νομίζω έγινε open source το τελευταίο, αλλά ποιος νοιάζεται; Είδες κανέναν από το κόσμο του Linux, τουλάχιστον σήμερα, να γουστάρει C#; Μέσα μας νοιώθουμε πως δεν πρέπει η Microsoft να αποκτήσει τον έλεγχο βασικών τεχνολογιών. Μπορεί να έχασε την μάχη και να αγαπά τον ανοικτό κώδικα, αλλά δεν έχασε τον πόλεμο.

Και η κατάσταση με το nushell δεν είναι ρόδινη, είναι σε άδεια τύπου BSD και όχι τύπου GPL, το ελεύθερο λογισμικό δυστυχώς χάνει καθημερινά έδαφος, γιατί σε αυτό οι εταιρίες που πληρώνουν δεν διαφέρουν από την Microsoft, αλλά τουλάχιστον έχουμε τον κώδικά δωρεάν.

Υπό αυτό το πρισμα, μιας και δεν ξέρω για το PowerShell δεν μπορώ αλήθεια να απαντήσω, αλλά το nushell έχει πάρει την έμπνευση, άλλα όχι τον σχεδιασμό. Κλασσικά η Microsoft κάνει overengineer τα πάντα, και άν θέλει να σπρώξει μια τεχνολογία την χώνει στα πάντα. Το PowerShell είναι ποιο πολύπλοκο και στενά δεμένο με την C#, ενώ το nushell έχει ποιο απλό σχεδιασμό, λέει θα υποστηρίξω μόνο πίνακες και θα επικοινωνώ με RPC με οποιαδήποτε γλώσσα προγραμματισμού. Επίσης μέχρι τώρα το nushell δεν πάσχει απο την παγίδα: Θέλω να γράψω μια γλώσσα προγραμματισμού, όπως πχ το Oil Shell ή το Crush, και καταλαβαίνει πως η κύρια χρήση είναι interactive και όχι σε μικρά script.

YΓ1: Άλλο πράγμα να χρησιμοποιείς κάποιον editor της Microsoft όπως το code. Δεν είναι μια βασική τεχνολογία αν αρχίσει να κάνει μικροσοφτίες απλά τον αλλάζεις. Και άλλο πράγμα μια βασική τεχνολογία όπως μια γλώσσα προγραμματισμού, ή ένα κέλυφος που η συμμετοχή της κοινότητας στον σχεδιασμό της είναι μηδενική (σε αυτό θα προσθέσω και την go).

YΓ2: Ναι επιβεβαίωσα το PowerShell είναι ανοικτού κώδικα, και μπορείς να το εγκαταστήσεις. Δεν συγκινήθηκε κανένας. Αν ήταν ένα εργαλείο που θα αύξανε την παραγωγικότητα και ήταν χρήσιμο, θα βλέπαμε συνεχώς άρθρα και όχι μια αδιαφορία. Σίγουρα η Microsoft θα προσπαθήσει να το σπρώξει, αλλά η αδιαφορία μέχρι στιγμής δεν με ώθησε να το κοιτάξω, κάτι που θα ήταν διαφορετικό αν πχ υπήρχε κάποιος ενθουσιασμός, γιατί κατά βάθος είμαι ένας πραγματιστής άνθρωπος.

Σε MIT άδεια είναι το Nushell και εικάζω ότι το έκαναν γιατί, καλώς ή κακώς, η GPL έχει πραγματικούς περιορισμούς αν θέλεις ένα έργο που να είναι αληθινά cross-compatible και να μπορεί να δουλεύει σε οποιοδήποτε λειτουργικό αλληλεπιδρώντας με στοιχεία αυτού.

Από 'κει και πέρα, η προσωπική μου εκτίμηση είναι ότι το Nushell θα εξελιχθεί σε «ένα ακόμα εναλλακτικό shell» και τίποτα περισσότερο. Να αντικαταστήσει το Bash στα βασικά σημεία όπου αυτό αγκαλιάζει το Linux, ας πούμε, δεν το συζητάμε καν για τα επόμενα 50 χρόνια. Για καθημερινή χρήση σε λιγότερο συστημικά θέματα ή ως shell «ειδικού σκοπού» , ίσως μπορεί να χρησιμοποιηθεί με επάρκεια, όπως μπορεί και το Zsh, το Fish και όλα τα υπόλοιπα -sh.

Θα σταθώ όμως σε κάποια σημεία που θεωρώ σημαντικά: πρώτον, ή «everything is a text stream» προσέγγιση αλλά και τα διάφορα «bashisms» σίγουρα έχουν μειονεκτήματα σε ορισμένες περιπτώσεις, όμως αντίστοιχα μειονεκτήματα (θα) έχει και η «everything is structured data» προσέγγιση αλλά και τα «powershellisms» (ας μου επιτραπεί ο όρος).

Επίσης, είναι σημαντικό να δούμε το background των δημιουργών. Ο Katz μπορεί να είναι «τεράστιος» στη Ruby και το Ember.js αλλά ένα shell είναι «a different kind of beast» και δε μπορεί να λογίζεται ως θετικό του σημείο το ότι είναι βολικό «ειδικά αν δουλεύετε με αρχεία json».

Ο δε Turner είναι «Microsoftοτραφής», με ό,τι μπορεί να συνεπάγεται αυτό για τα στοιχεία που θα προσδώσει σε ένα shell που θέλει να λειτουργεί και στο Linux ή γενικότερα σε Unix-like περιβάλλοντα. Και είναι πολύ άσχημο, παιδαριώδες θα έλεγα, που ερμηνεύει την αντίδραση στο σπάσιμο του POSIX ως «μου χαλάτε τη μυϊκή μνήμη», όπως διάβασα κάπου, γιατί δεν είναι αυτό. To POSIX είναι ένα πρότυπο και ως τέτοιο διασφαλίζει κάποια πράγματα, μεταξύ των οποίων και συμβατότητα. Εδώ ολόκληρη Apple φροντίζει να το τηρεί με κάθε επισημότητα, ποιος είναι ο (κάθε) Turner που λέει αυτές τις χαζομάρες;

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

Και ένα ερώτημα που μου δημιουργείται πάντα σε τέτοιες περιπτώσεις: οι δημιουργοί επιθυμούν να φτιάξουν κάτι «καλύτερο» all around ή κάτι που θα είναι πιο βολικό για τα δικά τους use cases και όσων προγραμματιστών έχουν αντίστοιχη προσέγγιση; Για την ώρα, και παρά το «hype» πλασάρισμα, εγώ προσωπικά κλίνω προς το δεύτερο για το Nushell. Αλλά θα είμαι χαρούμενος αν διαψευστώ.

1 «Μου αρέσει»

Ναι θα συμφωνήσω σε αυτό, αν και ποτέ δεν ξέρεις. Αν πάρουμε την περίπτωση του zsh που είναι απλά ένα bash με στεροειδή, δεν είχε καμία διάδοση για 20+ χρόνια. Τι το έκανε να διαδοθεί; Το ότι δεν ήταν GPL και η Apple ήθελε κάτι που να μην είναι GPL. (Γιατί αν υπάρχει σήμερα μια εταιρεία εχθρός του ελεύθερου λογισμικό είναι η Apple). Και ακόμα δεν είναι προεπιλεγμένο σε καμία διανομή, από όσο ξέρω τουλάχιστον.

Ίσως το λάθος του zsh να ήταν ακριβώς το ότι δεν πήγε να φτιάξει κάτι καλύτερο διαφορετικό. Ίσως απλά να μην ήταν η καλύτερη εποχή.

Τώρα το Bash δεν θα εξαφανιστεί ούτε τα GNU core utils, θα είναι πάντα εκεί για τα εκατοντάδες χιλιάδες script που έχουν γραφτεί. Τέλος το POSIX σε scripts είναι περιθωριακό. Ναι υπάρχουν scripts που είναι γραμμένα σε καθαρό sh αλλά είναι ελάχιστα και δυσκολότερα να γραφτούν. Στην πράξη τα πάντα είναι γραμμένα σε bashisms και GNU core utils. Θέλεις συμβατότητα σε sollaris; Εγκατέστησε τα εργαλεία του gnu. Αλλά αυτό δεν είναι POSIX.

Ούτε και πρόκειται να γίνει ποτέ. Προσωπικά το χρησιμοποιώ και το προτιμώ έναντι του Bash (δεν είμαι προγραμματιστής όμως) αλλά την ίδια στιγμή δε μου αρέσει το Fish ας πούμε γιατί ξεφεύγει πολύ από το Bash. Νομίζω ότι τέτοιες περιπτώσεις είναι συνδυασμός ενός υφέρποντος «generation gap» και πρακτικότητας.

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

Σε scripts γενικά, ναι. Αν όμως πρόκειται για ένα έργο που φιλοδοξεί να αντικαταστήσει το Bash ή το οποιοδήποτε άλλο shell και στους τομείς όπου αυτό ενσωματώνεται στο σύστημα, τότε το POSIX είναι εκ των ουκ άνευ.

2 «Μου αρέσει»

Σε manjaro η εντολή neofetch μεταξύ άλλων μου δίνει και αυτό: Shell: zsh 5.8
Εγώ πάντως δεν το έβαλα, υπήρχε προεγκατεστημένο.

Αν δούλευαν όλοι με βάση το posix , και εφόσον οι “καλές” διανομές έχουν υπερπλήρη man pages , δεν θα υπήρχε λόγος για αλλαγή στο bash. Ίσως κάτι χάνω στο σήμερα, από την απαρχαιωμένη ενασχόληση μου με το bash που διάβαζα μεν τις Χ παραμέτρους της εκάστοτε εντολής και τα δοκίμαζα μέχρι να μάθω τι ήταν αυτό που ήθελα ακριβώς , αλλά όταν το πετύχαινα και σημείωνα σε σημειώσεις την εντολή που κάνει αυτό που θέλω ακριβώς, ήταν ένα αίσθημα φοβερό, από αυτα που πάνε μαζί με την αγάπη για τις απεριόριστες δυνατότητες του linux. Τώρα δεν ξέρω που αυτό το bash σταματάει , γιατί ειλικρινά δεν μου έχει συμβεί… Αυτό που μου συνέβη είναι σε διαφορετικές εκδόσεις και να μην βρίσκω ίδιο αναλυτικό man page με αυτό του redhat τότε , και διαφορετικό folder path εντολών που μου έσπαγαν τα νεύρα ειλικρινά μέχρι να ξαναβγαλω άκρη…

2 «Μου αρέσει»

Βέβαια το zsh είναι συμβατό με POSIX sh οπότε μπορεί κάποιος άνετα να το χρησιμοποιήσει στη θέση του bash. Το fish όπως και το nushell ρίχνουν το compatibility τα οποία τα κάνει κάπως έξτρα “βάρος.”

Κάποιος dev; Πάντως το μοντέλο αυτό ταιριάζει στη Ruby. Π.χ. στο Nushell το

ls | where size > 1GB

είναι shorthand για

ls | where { = $it.size > 1GB }

που σε Ruby θα ήταν (όπου ls μια συνάρτηση που επιστρέφει ένα αντικείμενο)

ls.select { |x| x.size > 1.GB }

ή με pipeline operator (που αφαιρέθηκε νομίζω σε μια μόλις minor version)

ls |> select { |x| x.size > 1.GB }

Βασικά ένα Ruby-like shell όπως το Xonsh που βασίζεται πάνω σε Python θα ήταν ενδιαφέρον.

Αυτό εννοούσα με την αναφορά στο διαφορετικό paradigm που έκανα σε επόμενο σχόλιο.

Μη λες «κάποιος» dev γιατί μπορεί να διαβάζει ο @Asfodelus. Να λες «ο τρισμέγιστος Yehuda Katz, που έθεσε τη Ruby σε ράγες και αναμόρφωσε τη JavaScript» :stuck_out_tongue_winking_eye:

Εκεί όμως βρίσκεται η δική μου ένσταση σε τέτοιες περιπτώσεις. Δε βλέπω μια προσπάθεια να δημιουργηθεί κάτι καλύτερο από τις υπάρχουσες λύσεις για όλους και σε όλα τα use cases αλλά κάποιους ανθρώπους με πολύ συγκεκριμένες προσλαμβάνουσες, προτιμήσεις κλπ. που φτιάχνουν κάτι εντελώς διαφορετικό, που σίγουρα είναι καλύτερο για τη δική τους χρήση αλλά όχι ιδιαίτερα για όλους, το οποίο πλασάρεται σαν το «next best thing».

Γι’ αυτό ανέφερα παραπάνω ότι είναι σημαντικό να προσέξουμε το background των δημιουργών. Μη μας θαμπώνει το -άμεσο ή έμμεσο- marketing. Σε λίγα χρόνια μπορεί να εμφανιστεί κάποιος που να λέει ότι έγραψε έναν εναλλακτικό πυρήνα εξ ολοκλήρου σε JavaScript ξέρω 'γω, γιατί αυτό έμαθε και ξέρει.

1 «Μου αρέσει»

Σχεδόν κάθε γλώσσα με REPL μπορεί να χρησιμοποιηθεί σαν shell. Στο Pry (ελπίζω να χρησιμοποιείς το pry και όχι το irb) απλά ξεκινάς την εντολή με ένα dot. Αλλά έτσι έχεις μια γλώσσα προγραμματισμού και όχι ένα κέλυφος.

ΥΓ: Λίγα τα λόγια με το wycats.
«Πόσο πολύμορφα είναι τα έργα σου!. Είναι κρυμμένα από την όραση του ανθρώπου. Ω μοναδικέ Θεέ, που όμοιος σου δεν υπάρχει κανείς. Εσύ δημιούργησες τη γη σύμφωνα με την επιθυμία σου όταν ήσουν μόνος. Όλους τους ανθρώπους, όλα τα ζώα, μεγάλα και μικρά, και ότι στέκεται στα πόδια του πάνω στην γη και τρέχει ή πετάει ψηλά με τις φτερούγες του».

1 «Μου αρέσει»

Το δοκίμασα και μου δίνει σφάλμα: undefined method 'hymn_aten' for nil:wycats. Μήπως ξέρεις γιατί; :stuck_out_tongue_winking_eye:

Καληνύχτα παίδες.

2 «Μου αρέσει»

Όχι δεν το γνώριζα (ή βασικά σε κάποιο σημείο ξέχασα ότι υπάρχει γιατί βλέπω το έχω κάνει starred στο GitHub) το pry. Ενδιαφέρον.

Εδώ βέβαια δημιουργείται το εξής ερώτημα: σε πιο σημείο αυτός ο διαχωρισμός πραγματοποιείται; Αν έπαιρνα μια θέση θα έλεγα ότι το κέφυλος είναι η διεπαφή για να αλληλεπιδράσεις με άλλα προγράμματα ενώ σαν γλώσσα μια “κόλλα” για αυτά. Άρα το pry δεν είναι γιατί οι άλλες εντολές έρχονται δεύτερες (απαιτείται το .) ενώ φυσικά δεν είναι απλό να χρησιμοποιηθεί σαν κόλλα (όπως στα παραδείγματα, π.χ. ls -l | awk '{print $1}'). Όμως γιατί να μην μπορείς να έχεις και τα δύο;

Υπάρχουν 3 χρήσεις του κελύφους. Όσο δεν κάνουμε διάκριση σε αυτές κάθε κουβέντα καταλήγει σε αδιέξοδα. Ας τις δούμε

  • Σαν ένα περιβάλλον εργασίας
    Θέλω να τρέξω μια εντολή. Πόσο το κέλυφος με διευκολύνει. Εδώ για παράδειγμα το zsh πλεονεκτεί του bash τόσο σαν κέλυφος, όσο και σαν οικοσύστημα. Και εδώ πάλι θ πρέπει να κάνουμε μια διάκριση ανάλογα του τι θέλει ο καθένας.
    Για παράδειγμα αν θέλω να βρω τα αρχεία μεγαλύτερα κάποιου μεγέθους, θα χρησιμοποιήσω κάποιο γραφικό εργαλείο, μιας και αυτό θα το κάνω 1-2 φορές τον χρόνο. Αν όμως θέλω να το κάνω καθημερινά σαν μέρος της δουλείας μου, τότε ναι θα ψάξω όλες τις επιλογές της ls και του find. Αν είμαι κάπου στην μέση είναι ωραίο το nu.

  • Σαν μια γλώσσα κόλλα
    Να φτιάξω μικρές εντολές και εργαλεία “The UNIX Way”. Εδώ δεν είναι απαραίτητο να έχω το ίδιο κέλυφος. Θα γράψω σε bash και θα έχω κέλυφος κάτι άλλο. Που το πρόβλημα; Και ναι το zsh ίσως να έχει κάποια ωραία κόλπα, αλλά ΟΚ. Εδώ βλέπω προσπάθειες σαν το Oil να αποτυγχάνουν. Το πρόβλημα του Bash, δεν είναι το esac ή ότι χρησιμοποιεί αγκύλες. Για μια τέτοια χρήση δεν έχει καμία σημασία.

  • Να γράψω μεγάλα προγράμματα
    Ναι είναι φυσικό αυτό το εργαλείο των 20 γραμμών να γίνει 20.000 γραμμές, αλλά αυτό είναι λάθος. Κάποια στιγμή θα πρέπει να αφήσεις την όποια γλώσσα του κελύφους και να πιάσεις μια “σωστή” γλώσσα προγραμματισμού. Η Perl το προσπάθησε και απέτυχε, παρά την αρχική της επιτυχία. Σήμερα την θέση αυτή έχει πάρει η Python.

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

Μοιάζει πολύ με SQL statement, θα έλεγα. Ακόμη και ο τρόπος που παρουσιάζει τα αποτελέσματα, θυμίζει σχεσιακή βάση σε VM.

1 «Μου αρέσει»