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“
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.
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").
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.
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.1001
keine Bedeutung hat. Deshalb können wir Wörterbücher für Englisch erstellen, aber nicht für Bitstrings.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 :)
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.
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.
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.
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.
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.
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, %edx
oder int 21h
weist 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
James Kingsberry
Kraang Prime
Thijser
Nicolai Großherr
der_lotus
David
Benutzer9166
Quentin Ruyant
Benutzer13955
Benutzer13955
Ronnie Royston
Benutzer13955
Nicolai Großherr
Kraang Prime
Kraang Prime
Kraang Prime
Kraang Prime
Kraang Prime
James Kingsberry
Kraang Prime
Kraang Prime