Von einer einigermaßen gemeinsamen Programmiersprache, die Sie am meisten irreen sein finden?
Ich habe mir viele Programmier-Podcasts angehört und mir einige Zeit genommen, um einige neue Sprachen zu lernen, die als bevorstehend und wichtig erachtet werden. Ich spreche nicht unbedingt über BrainFuck , aber welche Sprache würden Sie als eine betrachten, die die gemeinsamen Programmierparadigmen in Frage stellt?
Ich habe in den neunziger Jahren einige Funktionen und Logik (zum Beispiel Prolog ) programmiert, daher kann ich nicht sagen, dass ich dort etwas Besonderes finde.
Ich bin weit davon entfernt, ein Experte darin zu sein, aber selbst heute ist Perl die aufregendste Programmiersprache für mich . Nicht weil "Hello World" schwer zu implementieren ist, sondern weil es so viel lexikalische Flexibilität gibt, dass einige der schwierigsten Lösungen so poetisch zerlegt werden können, dass ich mich von meinem Terminal entfernen muss, um den Kopf frei zu bekommen. Ich sage nicht, dass ich wahrscheinlich eine kommerzielle Software-Implementierung verkaufen würde, nur, dass es einen eindeutigen Grund gibt, warum Perl so (in) berühmt ist. Schauen Sie sich einfach die Grundliste der Bücher an.
Also, was ist Ihre irrsinnige Sprache, die Ihre besseren Programmierkenntnisse und Praktiken fördert ?
quelle
Antworten:
APL
Diese Sprache ist unglaublich mächtig und sehr knapp, es wird Ihr Gehirn verletzen.
Für den Anfang ist es schwierig, ohne eine benutzerdefinierte Tastatur oder zumindest eine Tastaturüberlagerung zu arbeiten, um alle verwendeten undurchsichtigen Symbole anzuzeigen.
Dann ist die Sprache vom Vektor / Array-basierten Paradigma und spezialisiert auf komplexe lineare Algebra. Die ursprüngliche Version enthielt nicht einmal Schleifenkonstrukte, alles, was durch Verketten von eher ungewöhnlichen Array-Operatoren gemacht wurde.
strip_tags()
irgendjemand? (Ausgeliehen von Wikipedia)quelle
Haskell . Es ist sehr nahe daran, rein funktional zu sein, was die meisten Menschen nicht gewohnt sind. sehr anspruchsvoll, was hilfreich ist, sobald Sie wissen, was Sie tun, aber bis dahin frustrierend; hat eine ziemlich kryptische, stark symbolische Syntax, die großartig ist, wenn man sie erst einmal kennt, aber davor undurchsichtig ... die Liste geht weiter.
Außerdem ist es einfach unmöglich, das Material so zu formatieren, dass es für mich gut aussieht.
quelle
Prolog. Es war einfach so anders als jede andere Sprache, die ich verwendet hatte, als ich zum ersten Mal damit konfrontiert wurde. Ich mag es, also hasse ich weder die Syntax noch irgendetwas.
quelle
!
).Ich werde dir in Perl zustimmen. Es ist die hässlichste Syntax, die ich je gesehen habe. Sie sagen, dass sich selbst Perl-Entwickler nicht daran erinnern können, was sie am Tag danach geschrieben haben.
quelle
Ich würde Forth sagen müssen . Die Notation, dass alle Operationen Stapelmanipulationen sind. In seiner reinen Form sind keine lokalen Variablen zu verwenden.
quelle
Ruby .
Das bringt mich dazu, mich umzubringen:
(Ich könnte die genaue Syntax falsch haben, aber Sie verstehen den Punkt).
quelle
DateTime.Now.AddMonths(1);
? Diese Funktionen machen den Code kaum lesbarer. (Ich sage nicht, dass C # die beste Syntax hat. Sie können es auf beliebige SprachkonventionenBrainfuck
Wer diese Verspottung einer Sprache ehrlich schreiben kann, sollte nicht einmal einen solchen Thread brauchen.
Hallo Welt (Zeiger links; Erklärung rechts):
quelle
Lisp ist meine neueste Sprache.
Ich habe die Monaden und die funktionale Programmierung von Haskell mitgenommen und jetzt habe ich Makros, mit denen ich arbeiten kann. Ich steige gerade in CLOS ein und habe das Konditionssystem überhaupt nicht berührt.
quelle
MUMPS
Dies ist eine Sprache, die von Zeit zu Zeit in Online-Storys auftaucht und die zusätzliche Ehre hat, in der tatsächlichen Produktion wichtige Informationen zur Lebenssicherheit (dh Patientenakten) zu speichern. Dies ist jedoch auch eine Sprache, in der Knappheit geschätzt wird und Funktionen wie die folgende im Produktionscode vorkommen können (Beispiel aus dem Wikipedia-Artikel zum Thema):
quelle
Ich würde sagen, Coq oder eine andere Implementierung der Theorie des abhängigen Typs. Haskells Typensystem ist vergleichsweise wenig aussagekräftig. Der Umzug in einem ausdrucksvollen Typ - System (zum Beispiel des Kalkül der Konstruktionen (CoC)) ermöglicht es Ihnen , einige netten Dinge zu tun, wie Eigenschaften von Programmen zu beweisen innerhalb der Sprache, und die Einbettung stark Invarianten in den Typen , die statisch überprüft werden können.
quelle
Ziel-C . Um fair zu sein, ich habe es nur extrem kurz studiert und die Syntax auf den ersten Blick so wenig gemocht, dass ich darauf verzichtet habe.
Da es sich um eine so (relativ) verbreitete Sprache handelt (hauptsächlich für die Entwicklung von Mac / iPhone / iPad ), bin ich mir sicher, dass sie etwas anständig ist, wenn man sich erst einmal daran gewöhnt hat.
quelle
[foo bar]
es sich nur um syntaktischen Zucker handelt, fürobjc_sendMsg(foo, "bar");
den der Funktionszeiger nachgeschlagen wird (es ist ein spezieller "Balken", kein generischer). Wusstest du, dass es voll getippt ist?[receiver doStuff:arg]
daranIch wähle Merkur .
Merkur hat mich in den Bann gezogen, als er mir zeigte, dass auch reine Sprachen I / O leisten können .
Dies funktioniert so, dass E / A-Funktionen in Mercury einen Wert für den Zustand der Welt annehmen und einen neuen Wert für den Zustand der Welt zurückgeben. E / A-Funktionen in Mercury verändern also die Welt und daher bleibt die Reinheit erhalten.
quelle
Das muss doch Scheme sein . Der Versuch zu erklären
call-with-current-continuation
schmerzt immer mein Gehirn, aber wenn Sie es einmal verstanden haben, können Sie unglaublich elegante Lösungen finden.Möchten Sie auf halbem Weg durch einen Algorithmus und eine Handsteuerung an eine andere Person übergeben? Sicher!
Möchten Sie dieselbe Fortsetzung mehrmals fortsetzen? Na sicher!
Möchten Sie die Ausführung eines Algorithmus anhalten, eine Funktion neu definieren und dann die Ausführung mit dem ursprünglichen Stapel fortsetzen, jedoch mit einem aktualisierten globalen Status? Kein Problem! Und dies mehrmals mit unterschiedlichen Änderungen am globalen Status, aber demselben Stapel-Wiedereintrittspunkt? Für Sie, Sir, alles!
quelle
Früher habe ich einen alten Editor namens TECO (Text Editor and COmparator) verwendet, eine sehr mächtige Textänderungssprache mit allen Arten von Makrofähigkeiten. Ich erinnere mich nicht genau an das berühmte Zitat darüber, aber das Wesentliche war, dass "jede zufällige Sammlung von 20 Zeichen fast immer ein legitimes TECO-Programm ist und Ihre Datei (es ist ein Editor) auf eine grundsätzlich unvorhersehbare Weise ändern wird. Ich erinnere mich, dass ich geschrieben habe ein Fortran in PL1 Konverter in etwa einer Seite TECO-Code.
quelle
Die Montage hat mich am meisten "umgehauen", aber ich fange gerade erst damit an.
quelle
Lisp . Das Lernen ist eine Reihe kleiner Epiphanies, von denen jedes die Art und Weise, wie Sie über das Lösen von Programmierproblemen nachdenken, grundlegend verändern wird.
quelle
REBOL
Es basiert auf dem Begriff Code-as-Data, so wie es Lisp ist. Den Anhängern der Sprache fällt es schwer zu erklären, was ihre einzigartigen Vorteile gegenüber anderen Ansätzen in dieser Familie sind, und sie zucken in der Regel die Achseln und sagen : und wenn Sie es einmal "verstanden" haben, wird es so aussehen, als würden Sie die rote Matrix-Pille einnehmen, und Sie werden nie mehr zurück wollen. "
Das Problem dabei ist zum Teil, dass es skurril ist und nicht genau definiert hat, welche Programmierer sein Markt sind. Aber auch teilweise, weil viele der Befürworter einfach nur am Erklären scheißen . :)
Aber Douglas Crockford war früher ein Fan, ließ sich bei der Entwicklung von JSON ein wenig davon inspirieren und hat vorgeschlagen, dass sich die Leute erst im Oktober 2010 damit befassen:
Ich denke, es lohnt sich, sich nach jemandem umzusehen, der seine Meinung zu Sprachdesign und Erweiterbarkeit erweitern möchte. Jetzt, da es Open Source ist (nach 18 Jahren firmeneigener Entwicklung), gelten die üblichen Haftungsausschlüsse, die ich gab, um es auf Distanz zu halten, nicht mehr ... es ist einen Blick wert! Die Community ist sogar aus ihrem proprietären Rebol-basierten Messaging-Programm ausgestiegen und hat begonnen, über Stack Overflow zu chatten (sehr zu meiner Überraschung!)
quelle
Ich würde aufgrund der Länge, die viele Leute verwenden, um nicht direkt schreiben zu müssen, sagen, dass SQL für Entwickler aufregend ist. Ich denke, viele Leute denken einfach nicht in Mengen.
quelle
Rein
Pure ist eine funktionale Sprache, die auf dem Umschreiben von Begriffen basiert. Ich mag es, es ist sowohl spärlich als auch ausdrucksstark, wenn auch ein bisschen untertrieben.
quelle
Es ist vielleicht nicht besonders nervenaufreibend, aber es war bei weitem am schwierigsten für mich zu lernen (ich dachte, Haskell und die Assemblersprache wären einfacher!)
Dies sind die HDL- Sprachen, insbesondere VHDL (und in geringerem Maße Verilog ).
Es ist unglaublich schwierig, die Tatsache zu überwinden, dass jede "Funktion" zur gleichen Zeit ausgeführt wird, und Sie können es nicht vermeiden, absolut alles zu parallelisieren. Natürlich ist dies nur eine Grenzsprache für die Programmierung.
quelle
Tcl
Ich begann es einmal zu lernen, aber als ich genug lernte, um einen Sinn zu ergeben, mochte ich es wirklich nicht, wie es mein Gehirn fühlte. Das scheint sich als irrsinnig zu qualifizieren.
quelle
Offensichtlich Turing-Maschinensprache . Es ist extrem leistungsfähig, allen anderen existierenden Programmiersprachen nachweislich überlegen und verletzt Ihr Gehirn garantiert, wenn Sie versuchen, es zu verwenden.
quelle
C
Zeiger, Speicherverwaltung und Typumwandlung erfordern viele Überlegungen und sind leicht zu verwechseln. Das Fehlen integrierter Datenstrukturen wie Hash-Tabellen oder -Listen bedeutet, dass Sie entweder Ihre eigene Bibliothek erstellen oder eine Bibliothek eines Drittanbieters suchen und deren API erlernen müssen.
quelle
JESS (Java Expert System Shell). Eingebettet in eine Java-Umgebung ist diese Anpassung von CLIPS eine funktionsregelbasierte Expertensystemsprache. Der Versuch, echte Java-Objekte als Fakten abzubilden und die richtigen Fragen zu finden, um die erwarteten Ergebnisse zu erzielen, ist eine echte Herausforderung. Weniger, wenn Sie mit der Expertensystemtheorie vertraut sind, aber wenn Sie von einer reinen OOP-Denkweise ausgehen, passt dies nicht gut. HINWEIS: CLIPS ist kein Lisp, sieht aber so aus. Noch ein Geisteskranker.
Sobald Sie die anfängliche Lernkurve hinter sich haben, ist es ziemlich mächtig und verdammt schnell, die Antworten zu finden.
quelle
TeX zählt als Sprache, da es Turing vollständig ist und ich denke, dass es ziemlich nervenaufreibend ist. Eine Sprache zum Setzen von Mathematik (und Bücher zum Programmieren) ...
quelle
CIL
CIL, die von allen .NET- Programmen kompilierte Common Intermediate Language, ist eine Art objektorientierte Assembly. Es ist interessant für mich, Code darin zu schreiben oder zu lesen und seine Konstrukte mit denen von C # zu vergleichen, die ich bereits kenne. Auf diese Weise erfahren Sie mehr darüber, was .NET hinter den Kulissen tut. Und es kann nützlich sein, um dynamischen Code zu generieren oder vorhandenen kompilierten Code mit Mono Cecil umzuschreiben .
quelle