Ich habe eine Zeile wie diese "PHP hat keine native Unterstützung für Unicode" durchgesehen. Ich habe auch gelesen, dass Python native Unterstützung für Unicode hat. Jetzt können Sie eine Funktion utf8_encode()
in PHP aufrufen , um einen String in Unicode zu kodieren, und Sie können eine Funktion unicode()
in Python verwenden, um einen String in Unicode zu konvertieren. Was bedeutet es also, Unicode nativ zu unterstützen? Einige Sprachen bieten native Unterstützung für Parallelität, während andere keine native Unterstützung bieten. Was ist damit gemeint?
Die Sprache X unterstützt nativ die Funktion Y
programming-languages
Liebe
quelle
quelle
Antworten:
Dies bedeutet, dass der Entwickler zur Unterstützung einer bestimmten Funktion keine Komponente verwenden muss, die nicht in der Sprache selbst eingebettet ist, wie z. B. eine Erweiterung oder ein Produkt eines Drittanbieters.
Zum Beispiel hat PHP keine native Unterstützung für Unicode, da jede Funktion, die sich mit Strings in PHP befasst, Unicode nicht unterstützt. Um beispielsweise eine Teilzeichenfolge abzurufen, können Sie diese nicht verwenden
substr
, sondern müssen sie verwenden. Hierzumb_substr
muss die Erweiterung "Multibyte-Zeichenfolge" verwendet werden.Um eine native Unterstützung für ein bestimmtes Feature zu erhalten, reicht es nicht aus, nur eine Erweiterung in den Quellcode-Trunk aufzunehmen. Stattdessen hätte PHP native Unterstützung für Unicode, wenn Unicode die Standardcodierung wäre, wie in C # oder Java.
quelle
mb_string
Funktionalität in PHP-Quellcode enthalten, würde es nativ werden?s = "Müsliriegel"mb;
anstelle von so etwas gebens = toMb("Müsliriegel");
(dies wird natürlich trivialerweise von allen Sprachen erfüllt, die UTF8 als Standardkodierung verwenden)"X-Sprache unterstützt nativ Feature Y" bedeutet, dass Sie Feature Y ohne Erweiterung oder sonstigen Aufwand verwenden können, damit es funktioniert. Es ist direkt aus der Sprache selbst verwendbar.
Zum Beispiel kann man sagen, dass
"C ++ - Sprache unterstützt nativ das Überladen von Operatoren."
"Java unterstützt die automatische Garbage Collection von Haus aus", da Sie keine anderen Bibliotheken oder Tools verwenden müssen, die die automatische Garbage Collection durchführen. Es kommt mit der Sprache (und Plattform) selbst.
quelle
Ich würde native in den Kontexten lesen, die Sie als eingebaut bezeichnet haben . Wenn eine Sprache für eine Funktion keine native Unterstützung bietet, müssen Sie sie selbst implementieren oder eine Bibliothek oder ein Modul finden, die bzw. das sie bietet.
Ein weiterer Kontext, in dem Sie native häufig sehen, betrifft Anwendungen auf der einen oder anderen Plattform. In diesen Fällen bedeutet es, dass es für die Plattform kompiliert und nicht irgendwie interpretiert oder übersetzt wird. Eine native iOS-App ist eine App , die in einer Sprache wie Objective-C geschrieben und zu Code kompiliert wurde, der direkt auf der ARM-Prozessorfamilie (die Sie auf iOS-Geräten finden) ausgeführt wird.
quelle
Ich würde das als Missbrauch des Begriffs ansehen. Damit etwas in einer Sprache "muttersprachlich" ist, müssen entsprechende Einrichtungen eingebaut werden. Native Unterstützung für so etwas wie Unicode würde rohe Typen in der Sprache haben, die Unicode auf irgendeine Weise implementieren. Normalerweise ist dies jedoch nicht Teil der Sprache, sondern Teil einer Bibliothek.
IMHO, das etwas aufruft, das in der Standardbibliothek der Sprache angezeigt wird oder nicht, macht etwas nicht native oder nicht.
Einige Beispiele:
C ++ bietet native Unterstützung für Klassen. C nicht. Es gibt keine Sprachschlüsselwörter oder Typfunktionen, die das Schreiben und Verwenden von Klassen ermöglichen. Sie müssen sie von Hand codieren.
Ich würde allerdings sagen, dass C ++ nicht mehr einen systemeigenen Zeichenfolgentyp als C hat. Es gibt eine basic_string-Vorlage in der Standardbibliothek, dies ist jedoch keine Sprachfunktion.
C ++ 11 scheint tatsächlich Unicode-Unterstützung hinzugefügt zu haben, da der Sprache selbst neue Schlüsselwörter und Raw-Typen hinzugefügt wurden, um die Arbeit mit Unicode-Werten zu erleichtern.
Hoffe, das verdeutlicht den Unterschied, den ich sehe.
quelle
bytes
Typ). Ich halte es daher für angemessen, zu sagen, dass Python Unicode nativ unterstützt.unicode
Typ, obwohl seine Verwendung schmerzhafter ist als Python 3. C ++ ist insofern ein seltsames Biest, als sich so viel von dem, was normalerweise Teil einer Sprache ist, in den Bibliotheken befindet.char[]
) und sogar Stringliterale. Nicht alle "rohen Typen" müssen übereinstimmende Literale haben, Zeiger in C zum Beispiel nicht. (NULL
Kann nur umgewandelt zuint*
)"Native Unterstützung", zumindest in interpretierten oder JIT-kompilierten Sprachen, bedeutet normalerweise Code, der im Grunde nur eine Verknüpfung zu vorkompilierten Funktionen ist, die sich unterhalb des Interpreters befinden.
Wenn Sie beispielsweise in JavaScript window.open in Firefox warnen, sehen Sie wahrscheinlich eine Funktion, deren Innereien so etwas wie "[native code]" sagen. Während alle Referenzen an den Interpreter weitergeleitet werden und Schritte unternommen werden müssen, um Kontext und Umfang festzulegen, sind die Innereien im Grunde genommen zwischengespeichert und einsatzbereit. window.open zum Beispiel ruft wahrscheinlich etwas aus der Laufzeitumgebung eines Browsers auf.
Dies unterscheidet sich von den nicht-nativen Objekten und Methoden, die Sie oder jemand anders geschrieben haben, da in diesen Fällen alle Ihre Anweisungen interpretiert / ausgewertet werden müssen.
Wenn jemand den Begriff in Bezug auf eine Sprache verwendet, die vorkompiliert wird, würde ich davon ausgehen, dass er nur das gesamte Kernsprachenmaterial meint, das der Compiler tatsächlich tokenisiert und in Maschinencode konvertiert, im Gegensatz zu dem Material, das Sie selbst definieren Strukturen und Referenzen, die alles miteinander verbinden.
quelle