Könnte eine Programmiersprache als Sprache betrachtet werden? [abgeschlossen]

Diese Frage scheint sich von selbst zu beantworten, aber ich fordere Sie auf, die Möglichkeiten und die Auswirkungen zu berücksichtigen, die dies auf die Gesellschaft haben könnte.

Als Systems Engineer ist mir das Programmieren näher als meine „Muttersprache“ Englisch.

Meines Wissens ist Ihre Muttersprache diejenige, mit der Sie sich am wohlsten fühlen, auch wenn die Gesellschaft um Sie herum sie nicht spricht. Bedeutet dies, dass ich die Versammlung auf Dokumente setzen sollte, wenn ich nach meiner Hauptsprache frage, und dann nach Englisch als Zweitsprache?

Wie würde sich dies Ihrer Meinung nach auf Länder auswirken, die in Gerichtsverfahren das Recht auf Dolmetscher haben?

Dies ist eher eine "lustige" Frage, aber sie hat einige potenziell lebensverändernde Möglichkeiten. Ist es an der Zeit, digitale Sprachen als tatsächliche Sprachen zu betrachten?

Sprache

die Methode der menschlichen Kommunikation, sei es mündlich oder schriftlich, die aus der strukturierten und konventionellen Verwendung von Wörtern besteht.

„Eine Studie darüber, wie Kinder Sprache lernen“

das Kommunikationssystem, das von einer bestimmten Gemeinschaft oder einem bestimmten Land verwendet wird.

„Das Buch wurde in fünfundzwanzig Sprachen übersetzt“

Ich kann verstehen, warum dies eine lustige, interessante Frage ist, aber das scheint davon abzuhängen, was Sie unter einer Sprache verstehen, und die Antworten fallen sofort davon ab, wie das definiert ist.
Wird den Beitrag mit einer Definition für Sprache aktualisieren, um Klarheit zu schaffen. Es wurde davon ausgegangen, dass die Wörterbuchdefinitionen des Begriffs verwendet werden (um es einfach zu halten). Ich habe bisher einige wirklich gute Antworten dazu gesehen, was es schwierig macht, über eine richtige "abzustimmen". Ich denke, das ist die inhärente Gefahr beim Posten in einem philosophischen System ;)
If(du.verstehst(dies)) then languages.add(this.programminglanguage)
Es ist zwar ein Definitionsproblem, aber es gibt passende. Siehe formale Sprache und/oder Chomsky-Hierarchie bei Wikipedia.
Die Programmiersprache sind nur Einwegbefehle, der Prozessor spricht nicht zurück. Und wir müssen Kommentare hinzufügen, Dokumente über der Programmiersprache haben, damit ein anderer Mensch sie verstehen kann. Muttersprache ist die, mit der Sie geboren wurden .
IMHO ist dies eine linguistische Frage - eine brauchbare Antwort könnte sich mit der Frage befassen, ob Computersprachen das von Chomsky vorgeschlagene Konzept der generativen Grammatik (oder eine andere vorgeschlagene Definition / ein wesentliches Merkmal natürlicher Sprache) modellieren. aber das ist ein Problem für Linguisten, nicht für Philosophen.
Wenn es eine ganze Reihe von Semantiken und nicht nur performative Semantiken und Syntaxen sind, die eine Sprache ausmachen, dann ist dies eine philosophische Frage, nur eine dumme, und die Antwort muss „Nein“ lauten. Computersprachen sind mathematische Strukturen, keine Bedeutungsspeicher.
Wie sagt man "Baum" in Versammlung? Mir scheint, dass der Vergleich im ersten Schritt fehlschlägt.
Es tut mir leid, das so zu sagen. Für mich persönlich brauchen wir nicht einmal in Frage zu stellen . Wir Menschen stellen seit Jahrhunderten Maschinen her , und wenn Sie die Programmiersprache als reines Gerät oder Teile von Maschinen betrachten , tja, dann wird sich die Frage selbst erübrigen.
Ich möchte sagen, dass dies überhaupt keine sprachliche Frage ist, sondern eher ein Problem , wie man mit der Eingabe oder Ausgabe von Daten umgeht . Wenn wir die PCs usw. sehen, eine Maschine oder den Spiegel von uns selbst, dann kann die Programmiersprache in die Kategorie der Linguistik fallen, wenn wir sie als Eingabe-Ausgabe- Geräte betrachten.
Das ist kein Off-Topic. Alles kann als alles angesehen werden. Davon abgesehen denke ich an das Konzept der Kommunikation, auch an das Konzept eines Algorithmus. Auf den ersten Blick denke ich, dass eine Programmiersprache darauf abzielt, Algorithmen zu konstruieren, während eine natürliche Sprache darauf abzielt, Kommunikation zu ermöglichen.
Ich stimme zu, ob diese Frage nicht zum Thema gehört oder nicht. Aber die Antwort ist ganz einfach. Damit die Programmiersprache zur „Sprache“ wird, muss die Maschine, die sich mit der Programmiersprache beschäftigt, selbst denken. Denn bisher gehört die Sprache dem Menschen. Daher muss sich die Maschine wie Menschen verhalten, die die Programmiersprache verwenden.
@ KentaroTomono Ich muss widersprechen, eine Programmiersprache ist für Menschen da, um über maschinen- / systemspezifische Probleme zu kommunizieren , wodurch sie zu einer Sprache wird.
@iphigenie --- Ich denke, Sie sollten es sich noch einmal überlegen, da dies nicht auf "Meinungen" basiert, sondern sich lediglich die Beweise jeder Seite ansieht und logisch bestimmt, wohin dieses Konzept fällt.
@JamesKingsbery --- Ich denke, Sie sollten es sich noch einmal überlegen, da dies nicht auf "Meinungen" basiert, sondern sich lediglich die Beweise jeder Seite ansieht und logisch bestimmt, wohin dieses Konzept gehört.
@Keelan --- Ich denke, Sie sollten es dringend überdenken, da dies nicht auf "Meinungen" basiert, sondern lediglich die Beweise jeder Seite betrachtet und logisch bestimmt wird, wohin dieses Konzept fällt.
@HunanRostomyan --- Ich denke, Sie sollten es sich noch einmal überlegen, da dies nicht auf "Meinungen" basiert, sondern sich lediglich die Beweise jeder Seite ansieht und logisch bestimmt, wohin dieses Konzept gehört.
@Dave --- Ich denke, Sie sollten es sich noch einmal überlegen, da dies nicht auf "Meinungen" basiert, sondern sich lediglich die Beweise jeder Seite ansieht und logisch bestimmt, wohin dieses Konzept fällt.
Es ist eine Meinungsfrage, weil es nach Betrachtung der Beweise auf beiden Seiten keine andere Möglichkeit gibt, zwischen den beiden Positionen zu entscheiden, als auf der Grundlage der eigenen Meinung darüber, was als "Sprache" gilt.
@JamesKingsbery - Ist das nicht bei allem so, besonders in der Philosophie oder Theologie. Bis etwas besprochen wird. Neben Ihrer Aussage, was für "Beweise". Dies war nur ein paar Tage geöffnet, als Sie schlossen, sodass Sie sich unmöglich alle Beweise ansehen konnten. Außerdem zeigt die Popularität dieser Frage, dass ich nicht der Einzige bin, der über diese Frage nachgedacht hat.
@JamesKingsbery - Außerdem weist dieses Dokument, ohne meine eigene Frage zu beantworten, in die Richtung, dass JA VIRGINIA - ES GIBT EINE DEFINITE ANTWORT --- byte-notes.com/generation-programming-languages

Antworten (9)

Kommunikation

Vergleiche deine Frage:

Meines Wissens ist Ihre Muttersprache diejenige, mit der Sie sich am wohlsten fühlen, auch wenn die Gesellschaft um Sie herum sie nicht spricht.

und http://en.wikipedia.org/wiki/Language :

Sprache ist die Fähigkeit, komplexe Kommunikationssysteme zu erwerben und zu nutzen, insbesondere die menschliche Fähigkeit dazu, und eine Sprache ist jedes spezifische Beispiel für ein solches System.

Ein Schlüsselpunkt des allgemein anerkannten Begriffs „Sprache“ ist die Kommunikation. Man kann also nicht wirklich sagen, dass es egal ist, ob die Gesellschaft um einen herum die gleiche Sprache spricht oder nicht.

Imperativ vs. informativ

Die Sprachfamilie, die Sie als Beispiel verwendet haben, Assembly, ist eine imperative Sprache: Sie gibt Anweisungen an einen Prozessor. Es ist nicht in der Lage, Informationen zu halten, nicht einmal in der sehr einfachen Form der Aussagenlogik. Richtig, Sie können Bits je nach Wahrheit einer Aussage setzen oder löschen, aber dann übermittelt die Sprache immer noch keine Informationen: Interpretation ist erforderlich.

In natürlichen Sprachen sind Informationen sehr wichtig. Der Austausch von Informationen ist eine der Hauptfunktionen der Sprache.

Andere Programmiersprachen wie Prolog oder funktionale Sprachen sind möglicherweise besser geeignet, um Informationen zu vermitteln, es ist jedoch schwierig, in diesen Sprachen mit Unsicherheiten zu arbeiten (z. B. "Es regnet möglicherweise").

Unterschätzen Sie nicht Ihre Fähigkeit, natürliche Sprache zu sprechen

Sie sagen, Sie könnten genauso gut Assembly als Ihre Muttersprache angeben. Bitte erwägen Sie für einen Moment, Ihre obige Frage in Assembly zu schreiben. Dann überlege noch einmal zu behaupten, dass Assembly deine Muttersprache gewesen sein könnte.

Gilt dies nicht für jede Sprache - Dolmetschen ist erforderlich. Im Englischen zum Beispiel reihen wir Zeichen aneinander und geben ihnen dann eine Bedeutung. Bei der Kommunikation mit diesen Aussagen werden sie dann interpretiert und sind anfälliger für Fehlinterpretationen der kombinierten Bedeutung oder des einzelnen Begriffs. Die Verwendung einer Sprache, die auf beweglichen Speicheradressen basiert, kann viel länger dauern, aber die vermittelte Bedeutung ist präzise, ​​was meiner Meinung nach einer der wichtigsten definierenden Faktoren einer Sprache ist. Außerdem habe ich überlegt, das Q in ASM zu schreiben, aber das ist eine Seite nur auf Englisch ^^
@SanuelJackson gibt es einen Unterschied zwischen der Menge an Interpretation, die erforderlich ist, um "Der König lebt" und " 10010011" zu verstehen. Zunächst einmal müssen wir allein die Bedeutung der Wörter kennen. Die zweite kann an verschiedenen Stellen des Speichers unter verschiedenen Programmen unterschiedliche Bedeutungen haben. Ich bin auch immer noch sehr daran interessiert, eine Übersetzung von "Der König lebt" in Versammlung zu sehen.
@Keelan - genau das Gleiche gilt für "The King Lives". Sie müssen wissen, was diese genauen Wörter in ihrem genauen Kontext bedeuten. Es hat die gleichen Informationen wie "034 084 104 101 032 107 105 110 103 032 108 105 118 101 115 034".
@Davor Sie müssen wissen, was die Wörter bedeuten, aber der Kontext ist irrelevant. Mit der Bedeutung der Wörter allein können Sie die Bedeutung der Wörter im Kontext verstehen. Im Maschinencode haben „Wörter“ außerhalb ihres Kontexts keine Bedeutung.
@Keelan - das macht wiederum buchstäblich keinen Sinn. Es gibt keinen Unterschied zwischen "natürlichen" Wörtern und binären Wörtern. Ich verstehe gar nicht, wie du dir das vorstellst. Beide sind einfach Symbole, die eine Bedeutung vermitteln.
@Davor es ist üblich zu sagen, dass das Wort "König" eine Bedeutung hat, aber 1001keine Bedeutung hat. Deshalb können wir Wörterbücher für Englisch erstellen, aber nicht für Bitstrings.
Der Kontext ist bei der gesamten Sprachverarbeitung äußerst wichtig, seien es Computersprachen oder "natürliche Sprache". Es gibt große Unterschiede zwischen den beiden, wie der Kontext bewertet und angewendet wird. Wenn Menschen (oder andere Kreaturen) über natürliche sprachliche Prozesse kommunizieren, gibt es eine riesige Menge an impliziertem Kontext, der eine große Unsicherheit mit sich bringt. Es gibt viele Möglichkeiten, eine Aussage zu lesen, und oft sind mehrere Bedeutungen beabsichtigt. Oft sind Bedeutungen vorhanden, die ursprünglich nicht vom Sprecher berechnet wurden, aber gültig sind. Computersprachen tendieren zu Klarheit und Eindeutigkeit.
Um an das Beispiel des Königs anzuknüpfen, könnten Sie sagen, der „König lebt“ und sich auf tausend verschiedene Könige in tausend verschiedenen Schlössern beziehen. Vielleicht stellt sich Ihr Gesprächspartner sogar einen ganz anderen König vor als den, von dem Sie gesprochen haben. Ob dies „effektive Kommunikation“ ist, ist nicht offensichtlich und oft lange nicht bekannt – wenn überhaupt. Bei einem Computer bedeuten die Symbole genau das, was sie bedeuten sollen, wenn sie es bedeuten sollen, oder sie werden als Müll/irrelevant angesehen. In menschlicher Sprache wäre das so, als würde jeder einen POV teilen.
@Sanuel Jackson Ich würde mich freuen, wenn ein einzelner grundlegender Satz aus dem Englischen in die Versammlung übersetzt würde. Sie haben bisher kein Beispiel angegeben, um Ihre Behauptung zu untermauern, dass die Frage in ASM hätte geschrieben werden können.
Während die Unterschiede zwischen den beiden Paradigmen (natürliche und „Maschinen“-Sprache) immer noch ziemlich umfangreich sind, ist hier ein interessanter Artikel über die Versuche, natürliche Sprache unter einem logischen Rahmen zu interpretieren. Ich glaube, dass dies durchaus möglich ist, wie es in dem Papier dargestellt wird, aber es betont (meiner Meinung nach) einfach die Unterschiede im ZWECK solcher Sprachen. Ob die beiden in ihren Extremfällen ununterscheidbar sind, ist für mich nicht das Hauptproblem: web.stanford.edu/class/linguist236/materials/…

Ich denke, es ist der pedantische Unterschied zwischen "menschlicher Sprache" und "Computersprache". Im Moment gibt es wahrscheinlich keine Unterscheidung in den meisten rechtlichen Definitionen in Bezug auf Übersetzungsrechte, aber es wäre eine schnelle Lösung, wenn jemand dies anfechten wollte. Gesetze enthalten normalerweise einen Abschnitt „Definitionen“, in dem sie die von ihnen verwendeten Wörter definieren. Die Definitionen, die sie verwenden, müssen nicht dem allgemeinen Sprachgebrauch entsprechen, es ist nur der Gebrauch, den sie in diesem Gesetz beabsichtigen. Sie würden die Definition sehr schnell ändern, um "menschliche Sprache" zu bedeuten (sorgfältig ausgearbeitet, um präzise zu sein und das Problem zu schließen).

Wenn Sie jedoch eine Kolonie gleichgesinnter Systemingenieure dazu bringen würden, eine Computersprache als Ihre tägliche Kommunikation zu verwenden, müssen Sie möglicherweise mit der Ausbildung eines Übersetzers beginnen :)

Das ist interessant und prägnant. Überlegen Sie, ob wir Computer als Bevölkerung betrachten würden. In einem Person-zu-Computer-Szenario kommunizieren Programmierer in einem oder mehreren Dialekten oder Sprachen, die der Computer verstehen oder interpretieren kann. Halten Sie es für sinnvoll, dies als eine Art Kolonie zu betrachten? Programmierer kommunizieren auch oft über Computercode (Assembler, VB usw.) miteinander, und wenn sie dies außerhalb der Arbeit tun, sehen die Leute mit glänzenden Augen zu, wie Nicht-Programmierer die Sprache nicht verstehen.
Sie haben mehrfach erwähnt, dass Sie ASM zur Kommunikation verwenden. Ich bin gespannt, wie das funktioniert, wenn Sie dies mit Ihren Kollegen tun. Reden Sie von ASM? Verwenden Sie es, um Englisch zu ergänzen. Werden Sie wirklich ein vollständiges Gespräch führen, wenn Sie nur ASM verwenden? Wenn ja, geben Sie bitte ein Beispiel - das wäre großartig
;btw, das zählt nicht.
Kein Problem. Im Gespräch ist es im Allgemeinen darauf beschränkt, zu diskutieren, wie etwas im Programm zu tun ist, wobei der Großteil des Gesprächs (wie Sie vermuten könnten) Register bewegt. Diese Konversationen haben typischerweise sehr wenig Englisch, beschränkt auf Sätze wie „Öffnen Sie dies“ und „Schauen Sie sich das an“, gefolgt von Mitteilungen in dieser Sprache, wenn die Informationen umfangreicher sind – z. B. würde es 3 Stunden dauern, sie zu lesen . Die Kommunikation ist zwar nicht immer verbal, findet aber immer noch hauptsächlich in der Sprache statt, die wir gemeinsam teilen.

Der Begriff „Muttersprache“ hat keine gesetzliche Standarddefinition. In den USA hat es eine gesetzliche Definition für Bildungszwecke des Bundes (mit Bezug auf die Finanzierung) als „die Sprache, die normalerweise von einer solchen Person verwendet wird; oder im Fall eines Kindes oder Jugendlichen die Sprache, die normalerweise von den Eltern des Kindes oder verwendet wird Jugend". Komfort spielt keine Rolle. Da Sie Assembler (keinen Dialekt) nicht sprechen, es nicht Ihre Muttersprache ist und kein Mensch eine Programmiersprache spricht, sind die restlichen Fragen strittig.

Angenommen, jemand erfindet empfindungsfähige Computer, die Menschen rechtlich gleichwertig sind, dann ist es möglich, dass binäre Opcodes (keine höheren Programmiersprachen, die menschliche Schnittstellengeräte sind) rechtlich als „die Muttersprache“ solcher Objekte angesehen werden könnten . Oder es könnte angenommen werden, dass alle Computer so programmiert werden müssen, dass sie Englisch verstehen. Da Computer sowieso keine Sprache verwenden, kann man nicht vorhersagen, wie das rechtliche Ergebnis aussehen würde.

Wenn ich mit anderen Programmierern zusammen bin, kommunizieren wir viel häufiger in diesen Sprachen als in Englisch. Wenn ein Nicht-Codierer zuhören würde, würde er vielleicht ein paar englische Begriffe verstehen, wenn sie eingemischt werden, aber im Allgemeinen würde das Gespräch weitgehend ohne Verständnis verlaufen. Dies ist üblich, dass Muttersprachler einer Sprache Begriffe aus einer anderen Sprache mischen (hören Sie jemals chinesische Radiosender - als Beispiel).
Dies schließt nicht die Möglichkeit/Wahrscheinlichkeit aus, dass die Sprache bei einem Test vor Gericht möglicherweise durchfallen könnte, jedoch sind sogar Klingonisch und alte "tote" Sprachen als Sprache zugelassen, obwohl sie weit davon entfernt sind, eine Bedeutung zu vermitteln endgültig. Dabei vermitteln Programmiersprachen die gleiche Interpretation von Computer zu Computer und von erfahrenem Programmierer zu erfahrenem Programmierer.
Es gibt einen einfachen Weg, um zu sehen, dass Assembler eigentlich keine Sprache ist. Geben Sie mir den Assembler-Ausdruck, der übersetzt "Alle Löwen sind Säugetiere", "Ich glaube, dass alle Löwen Säugetiere sind" und "Ich bestreite, dass alle Löwen Säugetiere sind". Diese Aussagen können in Klingonisch übermittelt werden, auch in jeder alten toten Sprache, die tatsächlich bekannt ist (also nicht in Etruskisch).
@user6726 - Sie wissen, dass es Millionen von Wörtern aus verschiedenen Sprachen gibt, die keine äquivalente Übersetzung in anderen Sprachen haben? Deine Argumentation ist geradezu lächerlich.
@Davor, der Punkt ist nicht, dass es eine kleine Lücke gibt, sondern dass Assembler im Prinzip nicht in der Lage ist, solche Vorschläge auszudrücken. In der natürlichen Sprache gibt es ein einfaches Mittel, um die Lücke zu füllen – leihen Sie sich das Wort für das neue Konzept. Das bedeutet nichts, wenn es auf Assembler angewendet wird.

Ich würde sagen, es ist in dem Sinne, dass es eine explizite Art der Kommunikation enthält. Damit Sie jedoch wirklich in einer Programmiersprache sprechen können, müsste Ihre Nachricht (mangels eines besseren Begriffs) ohne die Verwendung einer anderen vorhandenen Sprache interpretiert werden können.

Schauen Sie sich diesen Kommentar an, den Sie zu einer anderen Antwort gemacht haben:

private Liste _Languages ​​= neue Liste();
öffentliche Listensprachen { erhalten { return _Languages; } set { _Languages ​​= Wert; } };
Sprachen.Add("C#");
Sprachen.Add("ASM");
Sprachen.Add("Englisch");

Anhand dieses Beispiels würde ich sagen, dass Sie nicht wirklich über eine Programmiersprache kommunizieren. Was Sie tun, ist in einer verschleierten Form von Englisch zu kommunizieren, indem Sie eine Programmiersprache verwenden. Der Grund, warum ich das sage, ist die Verwendung von Zeichenfolgen wie "English". Der einzige Grund, warum dies für die Kommunikation funktioniert, ist, dass es bereits in einer anderen implizierten Sprache definiert ist.

Obwohl ich nicht genau weiß, wie Sie Assembler verwenden, um mit Ihren Kollegen zu kommunizieren, habe ich das Gefühl, dass Sie es im Wesentlichen verwenden, um eine englische Nachricht zu verschlüsseln, die dann von jemand anderem entschlüsselt werden kann, der Assembler versteht.

Beachten Sie auch, dass Ihr Beispiel in C# nicht syntaktisch korrekt ist. Selbst wenn die Variablen außerhalb einer Methode deklariert werden, die die anderen drei Anweisungen enthält, würde das Semikolon nach der Get/Set-Deklaration immer noch einen Fehler auslösen.

Gutes Auge, sorry, ging Semikolon glücklich ;)

Bedenken Sie, dass eine Programmiersprache – wie sie heute verwendet wird – eine Sprache ist, die eine operative Semantik hat, und dass eine natürliche Sprache eine Sprache ist, mit der Sie beispielsweise den Turing-Test erstellen könnten. Sie sehen, wohin das führt: Die Möglichkeit, sie austauschbar zu verwenden, wäre eine konkrete Widerlegung des Turing-Tests.

Abgesehen davon behauptet Pierre Lévy, dass es möglich ist, eine Sprache zu schaffen, mit der Sie sowohl Bedeutung als auch Berechnung ausdrücken können (was etwas anderes ist, als sie für diese beiden Zwecke austauschbar oder gleichzeitig zu verwenden). Im Erfolgsfall könnte es ein Game Changer sein – und so ist es auch beabsichtigt.

Eine grundlegendere Sorge ist, dass der Begriff "Sprache" in "Programmiersprache" eine sehr strenge Konnotation hat, die fast völlig unabhängig von dem Phänomen ist, das Linguisten untersuchen. Auch der Begriff „natürlich“ in „natürlicher Sprache“ ist philosophisch problematisch, alles andere als einvernehmlich. Es kann leicht verteidigt werden, dass die menschliche Sprache in ihrer Manifestation völlig künstlich ist.

Was den Turing-Test nicht besteht, ist festzustellen, ob ein Computer empfindungsfähig ist oder nicht, dies ist nicht relevant, wenn eine Sprache verwendet wird, um Informationen zuverlässig zu übermitteln. Für Entwickler ist es üblich, Informationen in der gemeinsamen Sprache, die sie kommunizieren möchten, zu "sprechen" oder anderweitig weiterzugeben - C++, ASM usw. Für diejenigen, die zuhören, würde es eher wie eine Sendung auf einem ausländischen Radiosender klingen, wo nur einige Wörter hier und da konnte man es verstehen. Ich habe das Gefühl, dass, obwohl es länger dauern kann, Bedeutung zu vermitteln, das Endergebnis präziser ist als Sprachen wie Englisch / etc.
Interessanterweise erinnerte mich Ihr Kommentar an den Versuch eines Psychotherapeuten, die Sprache eines psychotischen Patienten zu verstehen.
Wenn Linguisten den Begriff natürliche Sprache verwenden, dann scheint dies natürlich zu der Frage zu führen, welche Sprachen nicht natürlich sind; Wäre ein Beispiel Esperanto oder dachten sie an etwas ganz anderes?
Der Teil mit dem Turing-Test macht absolut keinen Sinn.
Und ich erwarte von Ihnen, dass Sie mir auf sinnvolle Weise genau sagen, warum. Die Last, Sinn zu machen, liegt bei uns allen.

Linguisten sind professionell im Umgang mit Sprachen ausgebildet; keiner von ihnen, soweit ich weiß, beschäftigt sich mit Assembler oder sogar einer Computersprache wie C++ oder Java; jede Sprache, die sie lernen, gesprochen wird oder gesprochen wurde; es kann eine schriftliche Form gehabt haben; es kann eine anspruchsvolle Gerichtssprache oder ein Kreol oder Pidgin sein.

Eine Computersprache muss exakt und präzise sein, damit sie überhaupt funktioniert; es kann mit Mehrdeutigkeit fertig werden – dh Überlastung oder kontextuelle Änderung des Geltungsbereichs; aber diese werden neu interpretiert, um sie präziser zu machen.

Menschliche Sprachen haben ein hohes Maß an Mehrdeutigkeit, was im Gegensatz zu Computersprachen als problematisch angesehen wird; und zwar so lange, wie Sie in einer natürlichen Sprache programmieren möchten oder wenn Sie Präzision fetischisieren; aber es wurde ziemlich schnell erkannt, dass eine stark verkürzte und modifizierte Sprache effektiver war; auf der Grundstufe die Turing-Sprache; auf Chipebene Maschinencode; dann höhere Sprachen wie COBOL, Smalltalk oder Java; Dies könnte als Sprachstapel bezeichnet werden.

Mehrdeutigkeit ist in menschlichen Sprachen wichtig, denn die Welt ist: Was ist ein Stuhl? Etwas zum Sitzen; also ein Baumstamm ebenso wie ein Sessel oder eine Bank; und vielleicht auch den Boden, wenn man bequem im Schneidersitz sitzt; und wäre es nicht unerträglich umständlich, jedem rotton einen anderen namen zu geben, weil es ein anderer farbton war ? Und könnte eine Metapher wie „sein Granitgesicht“ funktionieren, wenn Granit sich immer nur auf eine bestimmte Art von Eruptivgestein beziehen könnte? Und Gesichter nur für Menschen oder sogar Säugetiere?

Also nein; Computersprachen sind näher an Dingen wie Bauplänen von Häusern oder Gebäuden (sie werden zufällig seriell geschrieben – und interessanterweise hört man von „Hardware-Architektur und Software-Architekten“) als an tatsächlichen Sprachen – tot oder lebendig, kreolisch oder staatlich.

Sehr schöne Antwort, und Sie haben Recht, dass (wenn Sie eine Trennung vornehmen) die "menschliche" Sprache mehrdeutiger und daher anfälliger für Fehler oder Fehlinterpretationen ist. Damit eine Computersprache als Kommunikationssystem funktioniert, müssten Definitionen (z. B. vordefinierte Konstanten) vorhanden sein. Die Mehrdeutigkeit des "Granit"-Gesichts ist mehr Kreativität und Satire als eine genaue Beschreibung. Auch wenn Assemblierung eine weite Übertreibung dessen sein kann, was für eine effektive Kommunikation machbar ist, so sind ältere Formen der "menschlichen" Sprache wie Olde English, die ein sehr begrenztes Alphabet verwenden
@jackson: gern geschehen; obwohl ich glaube, dass Sie meine Absichten missverstanden haben, indem Sie sich auf Mehrdeutigkeit als einen Marker dafür konzentriert haben, was diese beiden Sprachbegriffe voneinander trennt. Eine natürliche Sprache ist aufgrund von Mehrdeutigkeit einfach nicht als Computersprache funktionsfähig; wie Sie sagten, führt es zu Fehlern; aber Mehrdeutigkeit ist für natürliche Sprachen natürlich und wird dort auf viele verschiedene Arten verwendet; Eines davon, das ich vorgeschlagen habe, ist die Konstruktion von Metaphern; Obwohl mein spezifisches Beispiel als Satire angesehen werden könnte, erinnere ich mich, irgendwo gelesen zu haben, dass es als grundlegendes Merkmal natürlicher Sprachen angesehen wird
Wie es die Welt um uns herum interpretiert: Betrachten Sie die Etymologie des Wortes Sprache ; es kommt vom lateinischen lingue , was Zunge bedeutet ; Ist das nicht eine Form der Metapher, wenn man sie im weitesten Sinne versteht? Es gibt wahrscheinlich einen sprachspezifischeren Begriff, der dies erklärt; aber leider weiß ich es nicht.
Persönlich habe ich als Teenager einmal ein Tagebuch im ASCII-Code geführt, weil es für mich selbstverständlich wurde, als ich den Assembler für den 6502-Prozessor von Hand codierte :)

Ich werde nein sagen, mit einer Einschränkung.

Wie natürliche Sprachen werden Programmiersprachen durch Grammatiken beschrieben. Im Falle einer Programmiersprache muss die Grammatik jedoch so eingeschränkt werden, dass eine Maschine jedes beliebige Programm lesen und (auf völlig sachliche, deterministische Weise) entweder 1) feststellen kann, dass es nicht gültig ist Aussage in der Sprache, oder 2) dass sie gültig ist und eine klare und eindeutige Bedeutung in der Sprache hat.

Dies bedeutet, dass Programmiersprachen in der Praxis weniger ausdrucksstark sind als natürliche Sprachen und von Natur aus nicht die Art von nuancierten Bedeutungen zulassen, die natürliche Sprachen nutzen, um Humor, Ironie oder Doppeldeutigkeiten (unter anderem) zu kommunizieren. Es gibt Konzepte, die mit natürlichen Sprachen kommuniziert werden können, die in den heutigen Programmiersprachen nicht auf ein äquivalentes Programm/Anweisung abgebildet werden können.

Auf dieser Grundlage würde ich sagen, nein, eine Programmiersprache ist nicht gleichbedeutend mit einer natürlichen Sprache, weil sie nicht ausdrucksstark oder flexibel genug ist, um alles zu kommunizieren, was eine natürliche Sprache kann.

Der Vorbehalt ist jedoch, dass, wenn Sie eine Programmiersprache haben, deren Grammatik der Grammatik einer natürlichen Sprache wie Englisch entspricht (oder eine Obermenge davon ist), diese Programmiersprache auch als natürliche Sprache gelten könnte. Dasselbe gilt, wenn jemand eine Programmiersprache erstellt, deren Syntax eine natürliche Sprache ist (dh Programme als freie englische Prosa eingeben kann). Realistischerweise glaube ich jedoch nicht, dass beides in absehbarer Zeit passieren wird.

Bearbeiten

Und hier ist eine gute Diskussion darüber, wie die mit einer natürlichen Sprache verbundene Grammatik im formalen/programmatischen Sinne bewertet wird:

https://stackoverflow.com/questions/4197751/is-there-a-formal-grammar-for-english-language

Die Worte „mehrdeutig“ und „riesig“ werden zu Recht herumgeworfen.

Auch eine Computersprache mit der Syntax einer natürlichen Sprache wäre nicht in der Lage, die menschliche Semantik zu übernehmen . Es gibt Menschen unter uns, die Probleme mit der menschlichen Semantik haben, die zutiefst autistisch und unablässig schizophren sind, und wir stellen fest, dass es ihnen schwer fällt, ihre eigene Sprache davon abzuhalten, sich in etwas zu verwandeln, das sie nicht einmal selbst verstehen. Jeder Computer, der diese Sprache „spricht“, würde sie wahrscheinlich nicht mehr beherrschen, es sei denn, Sie geben ihm eine sehr eingeschränkte Semantik. Und die Fähigkeit, eine ganze Reihe von Semantiken zu erfassen, macht für viele Menschen eine Sprache aus.
Auch eine gute Antwort. Wenn Sie beim Programmieren Emotionen einfangen möchten, können Sie jederzeit ein ASCII-Emote in die Kommentare einfügen. Menschliche Emotionen werden nicht nur durch Verben übermittelt, was programmatisch erfolgen könnte, sondern noch mehr durch Tonfall, Ausdruck und andere Körpersprache/Hinweise. Die Wahl der Sprache schließt nicht die Möglichkeit aus, diese Hinweise weiterhin so zu verwenden :)
Wären Kommentare nicht von der Berücksichtigung ausgenommen (es sei denn, der Inhalt in den Kommentaren ist in derselben Programmiersprache geschrieben, im Gegensatz zu einer anderen Sprache wie Englisch oder Emoji)? Das scheint eher ein Fall zu sein, eine Sprache mit einer anderen zu kommentieren, als eine Sprache mit den Eigenschaften einer anderen zu versehen. Als Randbemerkung denke ich, dass das Kommentieren von Code mit Kommentaren, die selbst in Code geschrieben sind, tatsächlich nach einer Menge Spaß klingt.

Ich würde nein sagen - wenn ich auf jemanden zugehe, der Java (oder Python oder eine andere Sprache) versteht und anfängt, es mit ihm zu sprechen, dann versteht er es vielleicht, aber erst, nachdem er es in einen Kontext gestellt hat.

Das hängt von Ihrer Definition von "Sprache" ab. Sie haben die Definitionen zitiert. Beginnen wir mit dem ersten:

die Methode der menschlichen Kommunikation, sei es mündlich oder schriftlich, die aus der strukturierten und konventionellen Verwendung von Wörtern besteht.

Programmiersprachen haben eine Struktur und Konventionen, und sie hat Wörter, die Bedeutungen haben. Während Programmiersprachen normalerweise geschrieben werden, ist es nicht undenkbar, eine Programmiersprache zu sprechen. Das primäre Konzept in dieser Definition ist, dass Programmiersprache eine "Kommunikationsmethode" ist, und eine Programmiersprache ist sicherlich eine Kommunikationsmethode, obwohl das primäre Ziel normalerweise Computer sind. Die Programmiersprache wird auch verwendet, um mit anderen Programmierern über die Schritte zu kommunizieren, die zur Erledigung von Aufgaben ausgeführt werden müssen.

Die zweite Definition:

„Eine Studie darüber, wie Kinder Sprache lernen“

ist in diesem Zusammenhang unzusammenhängend. Es gibt keine kohärente Definition dessen, was „Kinder“ in Bezug auf die Programmiersprache bedeutet.

Zuletzt,

das Kommunikationssystem, das von einer bestimmten Gemeinschaft oder einem bestimmten Land verwendet wird.

Diese Definition passt sicherlich zu einer Programmiersprache, die von einer Gemeinschaft von Programmierern verwendet wird, um mit Maschinen und untereinander zu kommunizieren.

Ich denke, das sind uninteressante Definitionen, sie heben den Unterschied und die Ähnlichkeit zwischen natürlicher Sprache und Programmiersprache nicht wirklich hervor. Versuchen wir etwas anderes.


Definition A:

Sprache ist ein Kommunikationssystem.

Was bedeutet „Kommunikation“? Bei Computern dreht sich die Kommunikation darum, Anweisungen zu geben, Fragen zu stellen und Antworten zu geben. Diese Funktionen werden tatsächlich von verschiedenen Computersprachen erfüllt, Programmiersprachen eignen sich hervorragend für die erste, eine Datenabfragesprache wie SQL oder Google Cards für die zweite, und die Bereitstellung von Eingaben für den Computer erfolgt über Datensprachen wie XML.

Definition A ist unbefriedigend, weil sie zwangsläufig viele Dinge beinhaltet, die wir traditionell nicht als Sprache definieren, wie Körpersprache, Mimik oder Pheromone.

Definition B:

Sprache ist ein strukturiertes System zur Kommunikation.

Was bedeutet „strukturiert“? Dafür definieren wir „strukturiert“ als die Eigenschaft, dass das System konsistente Regeln hat, um Elemente in der Sprache zu kombinieren, um größere Verbindungen zu konstruieren, um willkürlich komplizierte Konzepte auszudrücken.

Welche Strukturen hat eine Assemblersprache? Die Assemblersprache besteht ausschließlich aus imperativen Anweisungen mit einem festen Satz von Registern und Speicheradressen. Eine Anweisung wie mov %eax, %edxoder int 21hweist den Prozessor an, bestimmte Operationen auszuführen.

Wo greift die Imperativsprache zu kurz? Assembly hat einen festen Satz von Verben, die normalerweise in Hunderten nummeriert sind. Es ist nicht möglich, neue Anweisungen in reiner Maschinensprache zu definieren (lassen wir synthetische Anweisungen beiseite, die durch Makros erstellt wurden).

Welche Programmiersprachen können beliebige Verben definieren und ausdrücken? Prozedurale Sprachen sind Sprachen, in denen Sie neue Verben definieren können, indem Sie vorhandene Verben kombinieren. Prozedurale Sprachen sind jedoch von Natur aus immer noch zwingend erforderlich, da sie immer noch nur Verben haben.

Wo greift die prozedurale Sprache zu kurz? Prozedurale Sprachen wie C können Substantive nicht nativ ausdrücken (lassen wir die Verwendung von struct mit Präfix-Namenskonventionen ignorieren).

Welche Programmiersprachen können Substantive definieren und verwenden, um ein kohärentes Konzept auszudrücken? Objektorientierte Sprachen haben Substantive. Und Objekte können sowohl als Subjekt als auch als Objekt verwendet werden. In objektorientierter Sprache können Sie Konzepte ausdrücken wie:

Gewöhnliche Substantive/Klassennomen: „Ein Mensch“

class Human {}

Is-A-Beziehung: "Ein König ist ein Mensch":

class Royalty : Human {}

Einfache Eigenschaften: „Ein Mensch kann leben oder nicht“

class Human {
    Boolean alive;
}

Komplexe Eigenschaften: "Ein Mensch hat Hautfarbe"

class Human {
    Color skin;
}

Verhaltenseigenschaften: "Ein Mensch kann mit einem anderen Menschen über ein bestimmtes Thema sprechen"

class Human {
    void talkTo(Human another, Topic topic);
}

In Kombination mit Merkmalen aus der imperativen und prozeduralen Sprache können Sie auch Konzepte ausdrücken wie:

Eigenes / spezifisches Nomen: "Lass den König ein König sein"

king = new Royalty();

Spezifische Eigenschaften: "Lass den Kronprinzen ein König mit dunkler Haut sein"

crown_prince = new Royalty(skin=dark);

Schauspieler und Verben im Imperativ: "Kronprinz, rede mit der Königin über das Wetter!"

crown_prince.talkTo(queen, weather);

Was fehlt einer objektorientierten Sprache? Eine große Auslassung sind Tatsachenbehauptungen. Eine objektorientierte Sprache muss Problemumgehungen wie "Let..be"-Klauseln verwenden, um eine Tatsache anzugeben, und das ist unbefriedigend.

Welche Arten von Sprachen haben eine Tatsachenbehauptung? Eine logische Programmiersprache wie Prolog oder die DSLs , die zum Programmieren von Expertensystemen verwendet werden, haben eine native Möglichkeit, Fakten anzugeben, ohne die in weniger ausdrucksstarken Sprachen erforderliche Umschreibung.

Zum Beispiel können wir in einer logischen Programmiersprache ausdrücken:

Tatsachenbehauptung: „Löwen haben Milchdrüsen“

has_mammary_gland(lion).
has_mammary_gland(human).
mammal(X) :- has_mammary_gland(X).

Und diese Aussagen und Regeln können von einem Abfragelöser verwendet werden, um Lösungen für Fragen abzuleiten:

Ja/Nein-Frage: "Ist ein Löwe ein Säugetier?"

?- mammal(lion).
true

WH Frage: "Welche Säugetiere kennen Sie?"

?- mammal(Animal).
Animal = lion
Animal = human
Sie können Klassennamen durch beliebige Zeichenketten ersetzen (Hgyj statt Human, agkg statt alive). Genau genommen ist das Programm dasselbe. Wie würden Sie sagen, dass es in der Sendung wirklich um Menschen geht, ohne sich auf Englisch zu verlassen? Struktur ist nicht genug, man braucht Bezug zur realen Welt, die Programmiersprachen fehlen.
@quen_tin: Gute Frage. Ja, es spielt keine Rolle, welche Zeichenfolge Sie als Klassennamen eingeben (viele Computersprachen würden sie sowieso wegwerfen); Vielmehr wissen Sie, dass sich die Hgyj-Klasse auf Menschen in der realen Welt bezieht, anhand der Struktur und der Beziehungen zwischen den Klassen- und Methodendefinitionen, die aus den integrierten Funktionen in der Standardbibliothek aufgebaut sind. Der Mensch zum Beispiel ist die einzige Kreatur in der bekannten Welt des Computers, die sich gegenseitig angreifen kann. Wenn Sie die Methodendefinition für Hgyj.agkg angeben, ist dem Computer klar, dass nur Menschen aus der realen Welt dazu passen
@quen_tin: Ein großer Unterschied zwischen Computersprachen und menschlichen Sprachen besteht darin, dass Computersprachen mit einem ziemlich leeren Wörterbuch beginnen, während die menschliche Sprache fast immer mit einem ziemlich umfangreichen Wörterbuch bestehender Wörter beginnt, die langsam nacheinander in Sie einprogrammiert werden, wenn Sie ' re ein kleines Kind, das kaum sprechen kann. Aus diesem Grund müssen Sie Ihre eigenen Wörter und Konzepte von Grund auf neu definieren, hatten aber nicht das Bedürfnis, dies mit natürlichen Sprachen zu tun.
@quen_tin: Um es ins rechte Licht zu rücken, sollten Sie sich die gleiche Frage mit natürlichen Sprachen stellen. Woher wissen Sie, dass sich die Zeichenfolge „Mensch“ auf Englisch auf eine bestimmte Gruppe von Kreaturen in der 3D-Welt bezieht? Ihre Lehrer oder Eltern haben Ihnen wahrscheinlich die Definition dieses Wortes einprogrammiert, als Sie klein waren. Computer müssen dasselbe tun, die Identifikatoren beziehen sich oft, aber nicht immer, auf Konzepte der realen Welt, aber Computer arbeiten gerne mit einer minimalen Definition.
Der Punkt ist, dass wir Wörter lernen, indem wir mit der Welt interagieren, und dies ist möglich, weil wir ähnliche "Hardware" haben, aber Programmiersprachen unabhängig von der Hardware sind und Computer keine autonomen Lebewesen sind. + wir lernen Wörter nicht durch explizite Definitionen.
Die Frage der Referenz von Begriffen ist komplex, aber ich bezweifle, dass die Struktur ausreicht, um die Referenz festzulegen.