Die aufregendste Programmiersprache? [geschlossen]

45

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 ?

Xepoch
quelle
Kann es nicht verwirrend sein und es einfach dabei belassen?
4
Jede Sprache, in der es auf Leerzeichen ankommt!
mootinator
@mootinator - Aber es macht Spaß, mit Python zu arbeiten, solange Ihr Texteditor keine Schmerzen verursacht.
rjzii
1
@Thorbjorn Wird jemand INTERCAL hinzufügen? APL ist ein Junior-High-School-Projekt im Vergleich zu diesem großen Vater.
Mark C
Perl ist bei weitem nicht das Schwierigste. Ich bin 12 Jahre alt und kann Perl ziemlich einfach programmieren.
Dynamische

Antworten:

73

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.

APL-Tastatur

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)

strip_tags () ala APL

Orbling
quelle
18
+1 für das
Anzeigen
5
@tcrosley: Es ist schön, wenn Sie eine echte haben: wickensonline.co.uk/apl/unicomp-apl-top-large.jpg
Orbling
4
Und wenn es nicht schon nervenaufreibend genug war, gab es einige Bediener, die die Verwendung der Rücktaste / Overstrike-Taste benötigten. Beispiel: Inverse Matrix war das quadratische Kästchen (über der L-Taste) mit einem Trennzeichen (das neben der hinteren Pfeiltaste in der oberen rechten Ecke des Tastaturbilds) überstrichen.
Tangurena
2
Ich habe Rückblicke auf die frühen 1980er Jahre, als ich APL für statistische Regressionsanalysen auf hoher Ebene durchführte. Verwenden die Leute das immer noch? Schaudern.
HLGEM
2
Ich habe einmal viel APL gemacht - es ist immer noch ein nostalgischer Ort für mich ... ich habe es damals geliebt.
quick_now
56

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.

Jon Purdy
quelle
7
Ich hätte Haskell auch gesagt, aber nicht, weil es kryptisch ist. Während es sicherlich schwer zu verstehen sein mag, handelt es sich bei der verblüffenden Sache um die Theorie dahinter. Monade und Pfeile sind immer noch eine Domain, die ich nicht erobert habe :)
Matthieu M.
11
Warum "Fast rein funktional"? Es ist rein funktional.
Dan_waterworth
4
Ich möchte mich selbst zitieren und hinzufügen, wie Haskell Ihren Geist beugen wird: "Haskell hindert Sie daran, Dinge unter den Teppich zu schieben, zwingt Sie, sich explizit mit der Struktur Ihres Programms zu befassen, und bringt Ihnen eine Sprache bei, um diese Strukturen zu beschreiben : die Sprache der Typen. Wenn Sie Typen verstehen, insbesondere die reichen Typen wie Haskell, werden Sie in jeder Sprache zu einem besseren Programmierer. " programmers.stackexchange.com/questions/28950/…
Waquo
14
Haskell ist eine rein funktionale Programmiersprache. Der Code, den Sie in Haskell schreiben, ist rein funktional (solange Sie unsafePerformIO und dergleichen nicht verwenden). Die IO-Monade ist rein funktional, wenn Sie etwas anderes glauben, verstehen Sie nicht, wie Monaden verwendet werden, um den Kontrollfluss rein funktional zu modellieren. Stellen Sie sich Ihr Programm als Einkaufsliste mit E / A-Aktionen vor. Eine Einkaufsliste ist lediglich eine reine Datenstruktur, keine Nebenwirkungen, und die Sprachlaufzeit ist der Käufer, der die Nebenwirkungen ausführt.
Waquo
8
@Jon, wie wäre es damit, wir sind uns einig: Haskell, die Sprache, ist rein funktional, das Laufzeitsystem jedoch nicht. Die Ausführung eines Hash-Programms ist unrein, aber das Programm selbst ist rein.
Dan_waterworth
30

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.

Matt H
quelle
2
Ich habe mich als Reverse Programming an Prolog
gewandt
1
@ Xepoch: Ich denke, du bist vielleicht genau dort, Prolog formuliert die Frage. Eine der wenigen richtigen 5GL-Sprachen.
Orbling
Im Allgemeinen halte ich Prolog für sehr interessant und außerordentlich leistungsfähig, aber ich habe große Probleme damit, den Kopf vollständig um die Schnittplatzierung zu drehen ( !).
Orbling
+1 für Prolog, ich hatte einen Kurs für künstliche Intelligenz, der Prolog verwendete, und das ist nur der einzige Informatikkurs, den ich schlecht absolviert habe.
rjzii
Prolog ist jedoch keine funktionale Programmiersprache. Von Prolog auf Funktional bezogen zu sein, ist wie von Lisp auf prozedurale Programmierung bezogen zu werden.
NUR MEINE STELLUNGNAHME
24

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.

Sorantis
quelle
2
Def +1 auf Perl. Ich war immer besonders an impliziten Variablen interessiert (ich glaube, sie werden genannt). Hervorragender Nur-Schreib-Code.
GrandmasterB
2
Jeder schreibt Perl so unterschiedlich, dass er genauso gut verschiedene Sprachen schreiben kann. Sie müssen nicht nur lernen, wie Perl funktioniert, um den Code eines anderen zu lesen, sondern auch, wie diese bestimmte Person ihn verwendet.
Glenatron
3
Bah zu dieser Antwort und beiden Kommentaren. Gut geschriebenes Perl ist leicht zu lesen und zu schreiben. Von Neulingen geschriebenes Baby-Perl ist einfach, wenn auch wortreich. Das einzige "unlesbare" Perl ist entweder absichtlich verschleiert oder einzeilig.
Sean McMillan
22

Ich würde Forth sagen müssen . Die Notation, dass alle Operationen Stapelmanipulationen sind. In seiner reinen Form sind keine lokalen Variablen zu verwenden.

Peter Mortensen
quelle
10
FORTH ist eine wunderbare Sprache. Als ich in den frühen 80ern das Programmieren lernte, hatte ich einen Atari 400 und meine Entscheidungen wurden als BASIC, Assembly und FORTH interpretiert. Ich habe alle drei ausgiebig benutzt, aber FORTH mehr als jeder andere. Ich habe immer noch Leo Brodies ultra-klassische Bücher Starting FORTH und Thinking FORTH. In der Tat, wenn ich gefragt würde, ob ich auf einem neuen Hardwaresystem von Grund auf eine selbsthostende Sprache erstellen möchte, würde ich mich ohne zu zögern für FORTH entscheiden.
Adam Crossland
3
@Adam Crossland: Thinking FORTH ist ein großartiges Buch. Dieser Link könnte Sie interessieren: thinking-forth.sourceforge.net
Orbling
1
@Orbling: Großartige Köpfe denken gleich. Vor nicht mehr als 10 Minuten habe ich das PDF auf meinen Kindle gelegt.
Adam Crossland
1
@ Adam Crossland: Ein guter Ort dafür. Dieses Buch ist im Allgemeinen hilfreich für Programmierer, sollte auf der Leseliste für Leute stehen - die an FORTH interessiert sind oder nicht.
Orbling
1
Ich stimme vollkommen zu. Es gibt sehr viel darüber zu sagen, wie wir über die Lösung von Problemen im Allgemeinen denken. Brodie ist so ein klarer Denker und klarer Schriftsteller. Seine Werke sind mir eine Freude.
Adam Crossland
21

Ruby .

Das bringt mich dazu, mich umzubringen:

1.month.from.now()

(Ich könnte die genaue Syntax falsch haben, aber Sie verstehen den Punkt).

Matthew Read
quelle
23
OH MEIN GOTT. Wer hätte gedacht, dass dies eine gute Idee ist?
EpsilonVector
8
Das Beugen des Geistes ist nicht beim Lesen, sondern beim Schreiben. Es ist schwierig, sich diesen Unsinn einfallen zu lassen, und es ist lächerlich, sich alle eingebauten Funktionen / Eigenschaften merken / nachschlagen zu müssen.
Matthew Read
55
Findest nur ich das großartig und ist das möglicherweise ein guter Grund, Ruby zu lernen?
Orbling
9
Es ist großartig zu lesen, ja. Heißt das aber, ich kann 3.Monate.von.letzter.Monatszeit.auf.Was.einem.Sprung.jahr.schreiben? Nein. Zumindest glaube ich das nicht . Wenn ich kann ... RoR kann die erste telepathische Sprache überhaupt sein.
Morganpdx
15
Was ist falsch 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 Sprachkonventionen
umstellen,
18

Brainfuck

Wer diese Verspottung einer Sprache ehrlich schreiben kann, sollte nicht einmal einen solchen Thread brauchen.

Hallo Welt (Zeiger links; Erklärung rechts):

+++++ +++++             initialize counter (cell #0) to 10
[                       use loop to set the next four cells to 70/100/30/10
    > +++++ ++              add  7 to cell #1
    > +++++ +++++           add 10 to cell #2 
    > +++                   add  3 to cell #3
    > +                     add  1 to cell #4
    <<<< -                  decrement counter (cell #0)
]                   
> ++ .                  print 'H'
> + .                   print 'e'
+++++ ++ .              print 'l'
.                       print 'l'
+++ .                   print 'o'
> ++ .                  print ' '
<< +++++ +++++ +++++ .  print 'W'
> .                     print 'o'
+++ .                   print 'r'
----- - .               print 'l'
----- --- .             print 'd'
> + .                   print '!'
> .                     print '\n'
Scott Stamp
quelle
2
Oder wie wäre es mit Whitespace? Das ganze Übel von Brainfuck kombiniert mit unsichtbarem Code.
Loren Pechtel
17

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.

Larry Coleman
quelle
Ich mag die Lisps nicht einmal (mit der möglichen Ausnahme von Clojure - ich habe mich dort immer noch nicht entschieden) und habe dir +1 gegeben. Der nervenaufreibende Teil ist auf jeden Fall da und was ich von Lisp gelernt habe, obwohl ich es nicht benutze, hat viel darüber informiert, was ich in anderen Sprachen tue.
NUR MEINE STELLUNGNAHME
14

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):

s A="String" F i=1:1:$L(A) W $c($S($A($E(A,i))<91:$A($E(A,i))-52#26+65,1:$A($E(A,i))-84#26+97))
rob
quelle
Wow, du machst keine Witze, oder? Ich habe nicht verschlafen und plötzlich ist es der 1. April? Nichts mit so vielen Klammern und Dollarzeichen sollte sich in der Nähe meiner Patientenakten befinden.
Dan_waterworth
1
Mein erster Programmierjob war bei einer Firma, die sich auf MUMPS spezialisiert hat! Leider hatte ich einen Universitätskurs über Webentwicklung absolviert, sodass ich in das neu gebildete ASP-Team des Unternehmens aufgenommen wurde, anstatt mit alten Hasen, aber MUMPS war die Sprache, in der wir in den ersten Wochen geschult wurden. Vielleicht hatte ich ein glückliches Entrinnen ...
Thesunneversets
1
Jemand, der hier von Madison Wisconsin gepostet hat? Verona, wirklich?
Hans Passant
1
Ich glaube, dass thedailywtf.com eine ganze Sektion hat, die sich MUMPS widmet. Sieht nicht nach einer Sprache aus, die ich anfassen möchte.
Tyanna
1
Ich erinnere mich, wie ich M in der akademischen Welt gelernt habe und dachte, es sei eine interessante Spezialsprache. Die Knappheit, die es erlaubt, ist wie eine perverse Art der Verkleinerung. In meiner Naivität dachte ich, der Produktionscode würde nur wenig von der extremen Abkürzung der Sprache enthalten. Das erste und einzige Mal, als ich eine Produktions-M-Codebasis sah, wurde mein Darm verschärft ... es sah genauso aus wie in Ihrem Beispiel. Oh, der Schrecken!
Ajk
13

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.

Peter Mortensen
quelle
2
Jedes abhängige Typsystem / Prüfer / Sprache würde wahrscheinlich verwirrender sein als die regulären Sprachen, also +1.
Orbling
1
Die formale Überprüfung von Programmen ist etwas, mit dem ich gerade erst anfange. Es beugt mit Sicherheit den Verstand und wird in der realen Welt immer nützlicher. +1
dan_waterworth
7

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.

Peter Mortensen
quelle
2
Nun, es ist wahrscheinlich ein bisschen nervenaufreibend, aber ich mag es. Es könnte hilfreich sein, wenn Sie erkennen, dass [foo bar]es sich nur um syntaktischen Zucker handelt, für objc_sendMsg(foo, "bar");den der Funktionszeiger nachgeschlagen wird (es ist ein spezieller "Balken", kein generischer). Wusstest du, dass es voll getippt ist?
Per Johansson
Objective-C ist nur ein enormer syntaktischer Zucker um Laufzeitfunktionen. Wenn man sich erst einmal [receiver doStuff:arg]daran
gewöhnt
6

Ich 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.

dan_waterworth
quelle
3
+1 "... Quecksilber verändert die Welt und daher bleibt die Reinheit erhalten." - Ich mag das aus dem Zusammenhang. ;-)
Orbling
Ich kämpfe mich gerade mit Mercury durch die Lernkurve. Bisher war es ein würdiger Kampf. Ich mag es sehr.
Nur meine korrekte Meinung
Das einzige, was mich von Quecksilber abschreckt, ist, dass der String-Typ mit NULL abgeschlossen ist.
Dan_waterworth
6

Das muss doch Scheme sein . Der Versuch zu erklären call-with-current-continuationschmerzt 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!

Cameron Skinner
quelle
+1 LOL + "Für Sie, Sir, alles!" Abgesehen davon, dass es in Oliver !, beinahe eine Zeile in einem Song ist, ist es auch ein gutes Streben nach einer Sprache.
Orbling
1
Schema ist nicht die einzige Sprache mit expliziten Fortsetzungen. Haskell zum Beispiel unterstützt es ganz gut und genauso nachdenklich.
NUR MEINE STELLUNGNAHME
4
Es ist in Haskell wohl etwas nervöser, da es (call / cc) als Bibliothek und nicht als Sprachfeature implementiert ist. Aber vielleicht macht es das weniger nervös.
Logan Capaldo
Ich denke, es ist gleichzeitig mehr und weniger nervenaufreibend. Diesen Widerspruch im Kopf zu behalten, macht mich nervös. Am Ende ist Haskell also nervenaufreibender. :)
NUR MEINE richtige MEINUNG
Das Coole an Scheme (und Ruby !) - Fortsetzungen ist, dass sie in die Sprache eingebaut sind . Haskell fügt einfach eine monadische Syntax hinzu, um den gewöhnlichen Continuation-Passing-Stil zu umgehen, den Sie auch in Schema ausführen können. Aber wenn Call / CC überall eingebaut ist, ohne dass das Ganze in ein monadisches Konstrukt eingebettet werden muss, sind definitiv viele verblüffende Konstrukte möglich.
Dario
4

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.

Omega Centauri
quelle
5
"Eines der unterhaltsamsten Spiele, die Sie mit TECO spielen können, besteht darin, Ihren Namen als Befehlszeile einzugeben und zu erraten, was es tut. Jeder mögliche Tippfehler während eines Gesprächs mit TECO wird wahrscheinlich Ihr Programm zerstören oder noch schlimmer - führe subtile und mysteriöse Fehler in ein einmal funktionierendes Unterprogramm ein. " Mann, das waren die Tage!
NUR MEINE STELLUNGNAHME
1
TECO war auch die ursprüngliche Basis von EMACS. EMACS war ursprünglich nur eine Sammlung von TECO-Makros!
Gabe
@Omega: Es muss angegeben werden, auf welchen TECO Sie sich beziehen. DEC TECO im Lieferumfang von TOPS-10 oder MIT TECO in MIDAS. In diesem letzteren TECO wurde EMACS geschrieben. Es ist auch, wie EMACS erweitert wurde. Früher habe ich EMACS gehackt, anstatt Kurse zu bestehen.
John Saunders
Ich habe nur DEC TECO verwendet. Und ja, das waren die Tage (um wieder jung zu sein) ....
Omega Centauri
1
Bildet erinnere mich Typisierung in Vim Befehlsmodus
ron
3

Die Montage hat mich am meisten "umgehauen", aber ich fange gerade erst damit an.

Peter Mortensen
quelle
Was es noch schlimmer macht, ist, dass es vom Betriebssystem und der Hardware abhängig ist
Dave
Was macht es so? Gerade Anweisungen ohne explizite Gruppierungsreihenfolge? etwas anderes?
Jé Queue
Insbesondere mag ich nicht, wie unübersichtlich der Programmablauf ist. Es ist nicht leicht, schnell zu lesen.
Anto
2
Ah, der Cincinnati Milacron 2200B: Variable Wortlänge kombiniert mit einer Laufzeitänderung der Adresse eines JMP. Es ließ LSD zahm aussehen.
Peter Rowell
3

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.

Peter Mortensen
quelle
3

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:

"Ted Neward hat das Panel über 'Zukunft der Programmiersprachen' wirklich gut moderiert. Am Ende des Panels fragte Ted die Diskussionsteilnehmer, welche Sprachen sie lernen sollten, um neue Ideen zu erhalten. Die Liste enthielt Io (Bruce Tate), Rebol (Douglas Crockford) , Forth and Factor (Alex Payne), Scheme and Assembler (Josh Bloch) und Clojure (Guy Steele). "

Quelle: sauria.com

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!)

HostileFork
quelle
1
Ich vermeide REBOL, weil seine einzige praktische Implementierung eine nicht standardisierte, nicht offene Software ist, die nach Belieben des Unternehmens geändert wird. (Rebol 2 vs. Rebol 3 ...) Wenn es jemals standardisiert oder geöffnet wurde, werde ich einen weiteren Blick darauf werfen, aber bis zu diesem Tag bleibt Rebol von meinem Werkzeuggürtel entfernt.
NUR MEINE STELLUNGNAHME
1
@JUSTMYcorrectOPINION vielleicht ist der Tag gekommen, um einen anderen Blick zu werfen! Rebol 3 ist jetzt eine Apache2-lizenzierte Software . Wir haben sogar einen RebolBot hier im Chatroom von Rebol and Red auf StackOverflow, der uns beim Testen der Sprache hilft. ( Rot ist eine andere Open-Source-Rebol-Variante, die als hybrid kompilierte Version ein sehr interessantes Versprechen verspricht.)
HostileFork
2

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.

Peter Mortensen
quelle
SQL beugt sicherlich dem Verstand, hilft mir aber nicht, besseren Code zu schreiben.
dan_waterworth
4
SQL ist für mich genauso selbstverständlich wie BASIC, nur für mich. Erstaunlich, wie einfach eine DB-gestützte Anwendung sein kann, wenn Sie die vollständige Datenverarbeitung in SQL verstehen.
Jé Queue
@dan_waterworth, ich denke, SQL kann Ihnen dabei helfen, kleineren und präziseren Code zu schreiben, indem Sie mehr Logik in SQL einbauen als die meisten Bedingungen und nachfolgenden Abfragen in der App.
Jé Queue
@Xepoch, ich denke, wenn es irgendetwas gibt, was uns der Aufstieg der ORMs gelehrt hat, dann ist es, dass die Leute nicht gerne in SQL schreiben, wenn sie es vermeiden können. Sie schreiben viel lieber in ihrer eigenen Sprache.
Dan_waterworth
Ich denke, alles, was besseren Code schreiben kann als Sie, ist eine gute Sache.
JeffO
2

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.

Aliud Alius
quelle
+1 Funktional bedeutet Vektor, außergewöhnlich mächtige Sprache, die. Als Abkömmling von q (das APL etwas zu verdanken hat) und eine Tonne von Haskell et al. Es verdient sicherlich Erwähnung.
Orbling
2

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.

Peter Mortensen
quelle
Ich habe mal ein bisschen VHDL gemacht. Ich hatte einen echten Dreikönigsmoment, als mir plötzlich klar wurde, dass beim Hinzufügen von Code immer mehr Hardware diesen Code zu implementieren schien und alles gleichzeitig lief. Wie Multithread-Programmierung mit wirklich unbegrenzter gleichzeitiger Ausführung von Threads; Möglicherweise erhalten Benutzer mit Zugriff auf unbegrenzte Knoten in EC2 oder Karten-reduzierten Clustern ein ähnliches Echo. (Aber kurz danach wurde mir klar, was für ein Schmerz es ist, etwas Nicht-Triviales in diesen Sprachen zu implementieren, und ich rannte davon).
10.
1
Als Elektrotechniker hatte ich nicht viel Probleme mit der Gleichzeitigkeit, es war in der Tat eine ziemliche Befreiung. Was das Problem der Implementierung angeht, so ist das UP eine Nischenlösung für bestimmte Problemklassen, die das Problem in eine Lösung umwandeln, die als Algorithmen beschrieben werden kann, ein Konzept, das ursprünglich aus der Mathematik stammt. Ein Problem mit der inhärenten Parallelität ist eines der Probleme, die leicht zu lösen sind, und VHDL- und FPGAs haben sich zu dieser Zeit als nützlich erwiesen.
Ja, VHDL ist verrückt, wenn Sie noch kein Programmierer sind und daran gewöhnt sind, mit mehreren Blöcken gleichzeitig zu arbeiten.
Medivh
1

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.

David Thornley
quelle
1
Ich habe zwischen 1995 und 1997 viel Tcl programmiert, und das ohne besonderen Grund. Als ich 1998 anfing, einen neuen Job zu suchen, versuchte jeder Personalvermittler in der gesamten Bay Area, mich für schlecht bezahlte Hochdruck-VIGNETTE-Auftritte zu einem Vorstellungsgespräch zu bewegen. Ich entfernte es schnell aus meinem Lebenslauf. Ich dachte darüber nach, es dir schwer zu machen, da ich mich daran erinnerte, dass Tcl wirklich einfach war, aber ich wünschte mir, ich hätte stattdessen rückblickend Python gelernt.
Adam Crossland
Tcl ist definitiv ein erworbener Geschmack. Persönlich denke ich, dass das Design der Sprache genial ist - keine andere Sprache passt so gut zu meinem Gehirn wie Tcl, aber ich weiß, dass ich in der Minderheit bin. Lieben Sie es oder hassen Sie es, um es zu lernen, müssen Sie überdenken, wie Sprachen funktionieren sollen.
Bryan Oakley
1

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.

Peter Mortensen
quelle
6
Ich muss dagegen protestieren, dass es nachweislich überlegen ist. Der Begriff "Vorgesetzter" schlägt vor, subjektive Aspekte zu berücksichtigen. Wenn wir C auf einem Computer mit unbegrenztem Speicher ausführen (was nur fair ist, weil eine Turing-Maschine mit unbegrenztem Speicher ausgeführt wird), haben sie eine vergleichbare Leistung.
Winston Ewert
2
@ Winston: Das Band einer Turingmaschine muss nicht unendlich sein. Es muss nur an jedem Ende eine Bandfabrik vorhanden sein, die bei Bedarf zusätzliches Band herstellen kann :)
Mike Dunlavey
"Nachweislich überlegen" ist per definitionem ein objektiver Begriff. Das bedeutet, dass jede Sprache auf einer Turing-Maschine implementiert werden kann, aber nicht jede Sprache kann eine Turing-Maschine implementieren. Dies gilt natürlich auch für Sprachen wie C, die über unendlichen Speicher und unendlichen Stapel verfügen.
user12667
BrainFuck wie schon in der Frage erwähnt, und es ist so ziemlich Turings Maschinensprache.
Mchl
1
Das zeigt, dass eine Turingmaschine leistungsstärker ist. Das Problem ist, dass die Behauptung, eine Sprache sei überlegen, auch die Benutzerfreundlichkeit, die Verfügbarkeit usw. berücksichtigt
Winston Ewert,
1

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.

david4dev
quelle
Entschuldigen Sie. C ist eine Assemblersprache. Natürlich hat es diese Dinge nicht.
Peter Rowell
2
Assemblersprachen sind nervenaufreibend.
david4dev
-1

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.

Berin Loritsch
quelle
Jess ist eine moderne Version von CLIPS, die auch als Skript- / Logik-Engine für Ihre eigenen Anwendungen eingebettet werden konnte.
Tangurena
Ok, ich stehe korrigiert. haskel.com/corp/details/0,10294,CLI1_DIV139_ETI9759,00.html Dennoch erfordert es eine ganz andere Denkweise als die Sprache, in die es eingebettet ist.
Berin Loritsch
-1

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) ...

Peter Mortensen
quelle
-1

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 .

Peter Mortensen
quelle
2
oder auch Bytecode?
Jé Queue
Wenn Sie Java-Bytecode meinen, dann habe ich überhaupt keine Erfahrung damit, also bin ich nicht in der Lage, es als irrsinnig zu empfehlen.
SVICK
Ich würde Java-Bytecode und CIL nicht wirklich vergleichen, da Java-Bytecode bereits kompiliert ist und CIL zur Laufzeit kompiliert wird (Just-In-Time-Compiler von .net)
Basti
@chiffre Java Bytecode und CIL funktionieren in den meisten Fällen genau gleich. In beiden Fällen verfügen Sie über Quellcode (C # oder Java), der zur Kompilierungszeit in eine binäre Zwischensprache kompiliert wird (CIL- oder Java-Bytecode), die dann zur Laufzeit von einer JIT in den tatsächlichen Maschinencode kompiliert wird Compiler.
Svick