Danke für Link. Das werde ich mir sicherlich mit großem Interesse genau angucken.
bbbl hat geschrieben:Was denkt ihr darüber, macht es überhaupt Sinn weitere Sprachen zu entwickeln?
Ja, schließlich arbeite ich selbst an einer Programmiersprache. ^^
Allerdings befürchte ich, dass Go auch nichts großartig neues bringt.
EDIT: Ich habe mal was gelesen:
Go does not have classes with constructors or destructors. Instead of class methods, a class inheritance hierarchy, and virtual functions, Go provides interfaces, which are discussed in more detail below. Interfaces are also used where C++ uses templates.
Was ich hier bisher sehe, ist.... naja.
Go uses garbage collection. It is not necessary (or possible) to release memory explicitly. The garbage collection is (intended to be) incremental and highly efficient on modern processors.
Disqualifiziert die Sprache für mich.
Hier wären neue Konzepte wichtig und möglich.
Go has pointers but not pointer arithmetic. You cannot use a pointer variable to walk through the bytes of a string.
Sinnvoll. Aber nicht gut, es grundsätzlich zu verbieten - meiner Meinung nach.
Arrays in Go are first class values. When an array is used as a function parameter, the function receives a copy of the array, not a pointer to it. However, in practice functions often use slices for parameters; slices hold pointers to underlying arrays. Slices are discussed further below.
Klingt entweder teuer oder schreibaufwendig. Schreibaufwendig nervt Entwickler, das kann dann schnell teuer werden.
Strings are provided by the language. They may not be changed once they have been created.
Das ist eigentlich schade...
Hash tables are provided by the language. They are called maps.
Hübsch, aber kein Vorteil zu einer Klasse.
Separate threads of execution, and communication channels between them, are provided by the language. This is discussed further below.
Klingt erstmal gut.
Certain types (maps and channels, described further below) are passed by reference, not by value. That is, passing a map to a function does not copy the map, and if the function changes the map the change will be seen by the caller. In C++ terms, one can think of these as being reference types.
Ein Problem, dass ich kenne... was wird per Referenz übergeben, was kopiert? Arrays zu kopieren ist hier vielleicht inkonsequent.
Go does not use header files. Instead, each source file is part of a defined package. When a package defines an object (type, constant, variable, function) with a name starting with an upper case letter, that object is visible to any other file which imports that package.
Gut: Weniger Redundanz.
Schlecht: Die Groß/Kleinschreibung verändert die Bedeutung eines Objektes - das gefällt mir nicht. Weiterhin bedeutet das, dass ein Import eine komplette Datei lesen muss.
Go does not support implicit type conversion. Operations that mix different types require casts (called conversions in Go).
Implizite Casts erstmal zu verbieten: Sehr gut, aber nichts neues.
Damit Casts erforderlich zu machen: Sehr schlecht.
Go does not support function overloading and does not support user defined operators.
Halte ich für nicht gut, aber da Go offenbar nur ein verdrehtes C ist, ergibt sich das daraus - nicht aus der Sprachdefinition.
Go does not support const or volatile qualifiers.
Komplett daneben.
Go uses nil for invalid pointers, where C++ uses NULL or simply 0.
Gut.
Go ist keine neue Programmiersprache, sondern nur ein umgeschriebenes C. Vermutlich wird es ein gewisser Erfolg, weil Google dahinter steht. Auf den ersten Blick erscheint es mir aber als Fehlgriff.