Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Rust und kein ende ...
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

Goto page Previous  1, 2, 3  Next  
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
forrestfunk81
Guru
Guru


Joined: 07 Feb 2006
Posts: 519
Location: münchen.de

PostPosted: Tue Sep 15, 2020 3:31 pm    Post subject: Reply with quote

alexander_ro wrote:
Der Airbag tötet unschuldige Menschen weil die Implementierung einfach idiotisch gemacht ist. Muss halt für das Markting reichen und billig sein den Rest erledigen die Anwälte ... ein trauriges aber gängiges Industrie Konzept. Airbag sind genauso Dumm gemacht wie Garbage Collection. Gut Idee unbrauchbare Umsetzung.

Irgendwie hab ich so eine Argumentation erwartet :roll: Gerettete Leben vs getötete 100:1. Aber ist alles idiotisch, dumm und unbrauchbar.

alexander_ro wrote:

Soweit ich mich erinnere haben heute mehr oder weniger alle Programmiersprachen etwas ähnliches wie dynamische Typen anzubieten es ist aber am Häufigsten bei Scriptsprachen anzutreffen was nicht wundert. Statische haben so alle.

Wo ist denn die statische von Javascript z.B.?
alexander_ro wrote:

Ich weiß auch nicht warum man nicht erkennen können sollte ob Daten noch gebraucht werden?
Zumindest bei allem was der Compiler zu einem Klotz zusammen baut kann er das immer erkennen. An Schnittstellen zwischen verschiedenen Programmen wird es schwerer.

Wenn du nur in sich geschlossene Programme betrachtest kann das vielleicht funktionieren. Aber sobald externe Faktoren, wie z.B. Benutzer hinzukommen, kann der Kompiler nicht mehr vorrausberechnen was zur Laufzeit geschieht, welche Objekte sich z.B. wann in einem Array befinden werden und wann diese nicht mehr verwendet werden. Vielleicht ist an dir aber auch ein Compiler-Bau Genie verloren gegangen und du weißt etwas, was noch kein anderer Mensch vor dir gedacht hat.

Aber gut... ist jetzt schon weit OT. Und zum Glück geht die Entwicklung immer vorwärts und nicht rückwärts.
_________________
# cd /pub/
# more beer
Back to top
View user's profile Send private message
alexander_ro
Guru
Guru


Joined: 22 Nov 2014
Posts: 318

PostPosted: Tue Sep 15, 2020 4:08 pm    Post subject: Reply with quote

Quote:
rgendwie hab ich so eine Argumentation erwartet :roll: Gerettete Leben vs getötete 100:1. Aber ist alles idiotisch, dumm und unbrauchbar.

Die Quote basiert auf Untersuchungen von Unfallforschern die bei der Autoindustrie auf der Lohnliste stehen. Autounfall Forschung existiert praktisch keine Unabhängige.

Frag mal die Kinder des Vaters der bei einem Bagatellunfall vom Airbag getötet wurde nach ihrer Meinung. Ich würde nicht mal was sagen wenn man es nicht besser machen könnte das kann man. Einzig die Industrielle Raffgier steht dem im Weg.

Quote:
Wo ist denn die statische von Javascript z.B.?

Immer wenn der Typ im Sourcecode steht. Das geht auch bei JavaScript so.

Quote:
Und zum Glück geht die Entwicklung immer vorwärts und nicht rückwärts.

ist das so
Back to top
View user's profile Send private message
forrestfunk81
Guru
Guru


Joined: 07 Feb 2006
Posts: 519
Location: münchen.de

PostPosted: Tue Sep 15, 2020 4:36 pm    Post subject: Reply with quote

alexander_ro wrote:

Quote:
Wo ist denn die statische von Javascript z.B.?

Immer wenn der Typ im Sourcecode steht. Das geht auch bei JavaScript so.

Aha :roll:
_________________
# cd /pub/
# more beer
Back to top
View user's profile Send private message
alexander_ro
Guru
Guru


Joined: 22 Nov 2014
Posts: 318

PostPosted: Tue Sep 15, 2020 4:50 pm    Post subject: Reply with quote

Ich habe nochmal in eins meiner Programme rein geschaut. Das geht scheinbar doch nicht. Dann war das vielleicht PHP irgendwo konnte man den Typ im Sourcode angeben oder eben nicht. Aber als den Bahnbrechenden Konzeptionellen Unterschied würde ich das trotzdem nicht ansehen. So ganz ohne Probleme ist das nicht angeben des Typs ja auch nicht.
Back to top
View user's profile Send private message
franzf
Advocate
Advocate


Joined: 29 Mar 2005
Posts: 4545

PostPosted: Wed Sep 16, 2020 3:52 am    Post subject: Reply with quote

alexander_ro wrote:
Quote:
Wo ist denn die statische von Javascript z.B.?

Immer wenn der Typ im Sourcecode steht. Das geht auch bei JavaScript so

Über z.B. Flow (Uhuhu, Facebook...) kann man tatsächlich Typen in Javascript angeben.
In Python seit 3.5 kann man Typen auch angeben.
Code:
name : str = "Hubert"
alter : int = 42

Damit sind wohl JavaScript und Python statically typed, oder?

Auf der anderen Seite C++...
Code:
auto i = 42;

Damit wäre C++ jetzt dynamically typed weil kein Typ mehr dasteht, oder?
Back to top
View user's profile Send private message
alexander_ro
Guru
Guru


Joined: 22 Nov 2014
Posts: 318

PostPosted: Wed Sep 16, 2020 8:10 am    Post subject: Reply with quote

Die Programmiersprachen wurden die letzten Jahre immer ähnlicher. Das hat mit der Erfindung von C++ angefangen. Danach haben alle von Pascal bis Cobol eine Objektorientierung erhalten. Aber wirklich neues kam nach der Objektorientierung nicht mehr nach. Verbesserungen ja aber nichts so Grundsätzliches. Bringt eine Programmiersprache was neues oder kommen die Entwickler der Sprache zu der Erkenntnis das man mit zum Beispiel statischer Typisierung was verbessern kann wird es halt eingebaut. Sicher gibt es immer wieder Unterschiede bei den Sprachen so Grundlegend sind die aber nicht und verschwinden meist nach kurzer Zeit weil eben andere es dann nachrüsten.

C++ hatte meiner Meinung nach schon vor auto dynamische Typisierung. Das liegt daran das man einem Pointer der Basisklasse alle Abgeleiteten Typen zuweisen kann. Man muss zwar den Typ der Basisklasse angeben der Endgültige Typ wird aber erst später bestimmt. Je nach Anwendung kann das der Compiler erledigen falls nötig erfolgt es erst zu Laufzeit. Viel dynamischer geht nicht ...

Skriptsprachen sind nicht so meins trotz zahlreicher Änderungen zwar immer mehr vom Interpreter zum Compiler Mutiert aber immer noch langsamer (auch hier erfolgt immer mehr Angleichung). Mit einem kleinen Trick kann man C++ schreiben und benutzen wie eine Skriptsprache also warum dann was langsameres benutzen. Die Programme werden schon von alleine langsamer durch den Mist den ich manchmal Programmiere ... ;) Meine neuesten Javascript Programme sind sicher schon 2 Jahre alt.

Wenn der Compiler nicht weiß welche Objekte sich im Speicher befinden dann benutzte der Programmierer dynamischen Speicher. Der Compiler weiß aber was an einer stelle passiert im Programm und könnte sicherstellen das Speicher da ist. So lange es nicht über eine Schnittstelle in ein anderes Programm geht kann der sogar feststellen an welcher stelle der Speicher nicht mehr gebraucht wird. Die einfachste Lösung an Schnittstellen ist dort die Daten immer kopieren. Ist aber nicht die schnellste. Heute ist es üblich für eine Bibliothek die Header mitzuliefern damit Programmierer und Compiler wissen welche Funktionen wie aufgerufen werden können. Man könnte bei einer Bibliothek zum Beispiel ein vom Compiler generiertes File mitliefern das die nötigen Informationen für die Speicherverwaltung liefern. Wichtig ist nur das muss der Compiler automatisch erstellen nicht der Programmierer der macht nur Fehler. Damit könnte man auch über Schnittstellen hinweg Speicherprobleme voll automatisch erkennen. Gibt so was aber nicht ich weiß nicht warum. Immer wenn ein Mensch am Sourcecode erkennen kann das es hier ein Problem gibt könnte das auch der Compiler erkennen.

Ich habe jetzt mal mit
Code:
qlist -Iv | grep xfce

mal alle Pakete zum xfce gesucht und entfernt. Dann mit --depclean aufgeräumt. Der ist damit aber noch nicht fertig sollte dann aber schon das meiste nicht mehr benötigte entfernt haben. Hoffe ich ...
Back to top
View user's profile Send private message
franzf
Advocate
Advocate


Joined: 29 Mar 2005
Posts: 4545

PostPosted: Wed Sep 16, 2020 9:21 am    Post subject: Reply with quote

alexander_ro wrote:
C++ hatte meiner Meinung nach schon vor auto dynamische Typisierung. Das liegt daran das man einem Pointer der Basisklasse alle Abgeleiteten Typen zuweisen kann. Man muss zwar den Typ der Basisklasse angeben der Endgültige Typ wird aber erst später bestimmt. Je nach Anwendung kann das der Compiler erledigen falls nötig erfolgt es erst zu Laufzeit.

Jepp, fast schon dynamischer als Polymorphie.

Quote:
Viel dynamischer geht nicht ...

Naja, dynamischer wäre noch, dass man eine Variable erst als string nutzt, und danach als int, und vielleicht später nochmal mit ner eigenen Klasse vielleicht.
Aber das kriegen ja nichtmal Scriptsprachen hin.
Back to top
View user's profile Send private message
forrestfunk81
Guru
Guru


Joined: 07 Feb 2006
Posts: 519
Location: münchen.de

PostPosted: Wed Sep 16, 2020 10:02 am    Post subject: Reply with quote

franzf wrote:

Über z.B. Flow (Uhuhu, Facebook...) kann man tatsächlich Typen in Javascript angeben.
In Python seit 3.5 kann man Typen auch angeben.
Code:
name : str = "Hubert"
alter : int = 42

Damit sind wohl JavaScript und Python statically typed, oder?

Flow scheint mir eher eine Art statische Code Analyse Tool zu sein, welches Typ Inferenz zur Verfügung stellt und falsche Zuweisungen erkennen kann.


Quote:

Auf der anderen Seite C++...
Code:
auto i = 42;

Damit wäre C++ jetzt dynamically typed weil kein Typ mehr dasteht, oder?

Viele Sprachen haben mittlerweile Typ Inferenz. Dadurch wird der Typ einer Variable spätestens zur Compilezeit automatisch erkannt und festgelegt (auch wenn er im Code nicht explizit formuliert ist). Nichtsdestotrotz hat die Variable einen vorhersagbaren und eindeutigen Typ welcher dem Compiler bekannt ist. Und genau das macht eine Sprache statisch typisiert. Im Gegensatz dazu werden bei dynamisch typisierten Sprachen die Typen erst zur Laufzeit bestimmt.

Code:

function something(var x, var y) {
  return x + y;
}

Bei einer dynamisch typisierten Sprache kann dieser Pseudocode einmal mit String Parametern und nächstes Mal mit Integern durchlaufen werden. Bei einer statisch typisierten Sprache ist der Code ungültig, da auch mit Typ Inferenz nicht zur Compilezeit erkannt werden kann, welchen Typs x und y sind.
Code:

function something(var x, var y) {
  return x.startsWith(y) && y.startsWith(x) ;
}

Das wiederum könnte auch statisch typisiert gültig sein, falls die startsWith Operation eindeutig einem Typen zugeordnet werden kann (z.B. String).

alexander_ro wrote:

C++ hatte meiner Meinung nach schon vor auto dynamische Typisierung. Das liegt daran das man einem Pointer der Basisklasse alle Abgeleiteten Typen zuweisen kann. Man muss zwar den Typ der Basisklasse angeben der Endgültige Typ wird aber erst später bestimmt. Je nach Anwendung kann das der Compiler erledigen falls nötig erfolgt es erst zu Laufzeit. Viel dynamischer geht nicht ...

Vererbung ändert nichts daran, das C++ statisch typisiert ist. Zur Laufzeit hat der Compiler einen fixen Typ (Basisklasse) für die Variable und erlaubt auf dieser Variable nur Operationen dieses bekannten Typs (Basisklasse).

alexander_ro wrote:

Wenn der Compiler nicht weiß welche Objekte sich im Speicher befinden dann benutzte der Programmierer dynamischen Speicher. Der Compiler weiß aber was an einer stelle passiert im Programm und könnte sicherstellen das Speicher da ist. So lange es nicht über eine Schnittstelle in ein anderes Programm geht kann der sogar feststellen an welcher stelle der Speicher nicht mehr gebraucht wird.

Das typische Speicherleck (in Sprachen mit Garbage Collector) sieht meiner Erfahrung nach so aus, dass in einer Liste (oder Array oder ähnliches) viele Objekte gespeichert werden und daraus nicht mehr rausgelöscht werden. Die Liste wird tatsächlich während der gesamten Laufzeit benötigt, kann und darf deshalb vom Garbage Collector nicht aufgeräumt werden. Die Objekte in der Liste werden aufgrund von externen Faktoren (z.B. Events aus einer Queue oder Benutzerinteraktion) hinzugefügt und bearbeitet. Eventuell ist mehrfache Bearbeitung nötig. Und irgendwann kommt ein finales Event, und nach der finalen Bearbeitung muss das Objekt entfernt werden. Es ist selbstverständlich ein Programmierfehler, das Objekt hier nicht aus der Liste zu entfernen und dem Garbage Collector die Möglichkeit zu geben den Speicher freizugeben. Die Liste wird über die Zeit immer größer und der Speicher voll laufen. Ich sehe keine Möglichkeit für den Compiler oder die Sprache selbst zu erkennen, wann ein Objekt aus der Liste nicht mehr benötigt wird. Soetwas ist eine funktionale Anforderung, die der Compiler nicht kennen kann.

alexander_ro wrote:
Mit einem kleinen Trick kann man C++ schreiben und benutzen wie eine Skriptsprache also warum dann was langsameres benutzen.

Weil es einfach keinen Spass macht mit C++ Webseiten zu programmieren ;-) Und weil es weder sicherer, noch effizienter (im Sinne von Entwicklungskosten) sein wird. Oder auch einfach weil ich für ein kleines clean-up-by-cronjob.sh Skript keinen Compiler anwerfen will.

Damit kommen wir vielleicht wieder zurück zu Rust und warum es gut ist, dass das entwickelt wurde. Ja, viele der Konzepte wurden nicht dort erfunden. Aber in dieser Kombination gab es das nicht für Betriebssystem-nahe Programmiersprachen und keiner will einen Browser in Java entwickeln oder benutzen. Genauso wenig will ich meinen kleinen Zweizeiler in C++ schreiben, wo das doch viel schneller in Bash geht. Ich bleib dabei: Nimm das richtige Tool für den richtigen Zweck.
_________________
# cd /pub/
# more beer
Back to top
View user's profile Send private message
alexander_ro
Guru
Guru


Joined: 22 Nov 2014
Posts: 318

PostPosted: Wed Sep 16, 2020 10:39 am    Post subject: Reply with quote

Quote:
Vererbung ändert nichts daran, das C++ statisch typisiert ist. Zur Laufzeit hat der Compiler einen fixen Typ (Basisklasse) für die Variable und erlaubt auf dieser Variable nur Operationen dieses bekannten Typs (Basisklasse).


Das ist ganz klar falsch. Du kannst dann nicht nur die Basisklasse Aufrufen über diesen Pointer sondern jede davon abgeleitete Klasse. Da man über diesen Pointer jede Abgeleitet Klasse zur Laufzeit übergeben kann wird der genau Typ auch erst zur Laufzeit bestimmt. Das widerspricht eindeutig Deiner pauschalen Behauptung C++ wäre Statisch Typisiert.

Im ünrigen kann man in C++ sehr wohl Funktionen schreiben die man mit verschiedenen Typen aufrufen kann.

Dein Code Beispiel übergibt den einen Typ an den jeweils anderen das ändert aber nicht wirklich was an den Typen?
Verstehe ich jetzt nicht was das mit dem Thema zu tun haben soll.
Code:

function something(var x, var y) {
  return x.startsWith(y) && y.startsWith(x) ;
}


Lustigerweise wird C/C++ auch bei Wiki Pedia nicht als statisch Typisiert geführt was auch richtig ist weil es Pauschal nicht stimmt. Es ist richtig das es statisch Typisierung da gibt aber eben auch dynamische.

Bei einzelnen Daten kann er das nicht erkennen. Die meisten Speicherlecks die ich kenne vergessen einfach das ganze frei zu geben. Der andere häufige Fehler ist Speicher zu Nutzen der nicht da ist.

@franzf: Im Prinzip kann man das mit C++ das man untypisierten Speicher verwaltet und abwechselnd für String und anderes benutzt. Ich würde aber davon abraten das zu tun.
Back to top
View user's profile Send private message
franzf
Advocate
Advocate


Joined: 29 Mar 2005
Posts: 4545

PostPosted: Wed Sep 16, 2020 11:13 am    Post subject: Reply with quote

alexander_ro wrote:
Quote:
Vererbung ändert nichts daran, das C++ statisch typisiert ist. Zur Laufzeit hat der Compiler einen fixen Typ (Basisklasse) für die Variable und erlaubt auf dieser Variable nur Operationen dieses bekannten Typs (Basisklasse).


Das ist ganz klar falsch. Du kannst dann nicht nur die Basisklasse Aufrufen über diesen Pointer sondern jede davon abgeleitete Klasse. Da man über diesen Pointer jede Abgeleitet Klasse zur Laufzeit übergeben kann wird der genau Typ auch erst zur Laufzeit bestimmt. Das widerspricht eindeutig Deiner pauschalen Behauptung C++ wäre Statisch Typisiert.

C++ IST statisch typisiert! Punktausfertigamen. Zu JEDER Zeit hat ein Objekt immer genau einen festgelegten Wert. Wenn das ein Basisklassenzeiger ist dann ist es ein Basisklassenzeiger und nix anderes, auch wenn du zur Laufzeit andere Zeiger (vom Typ Basisklasse oder davon abgeleiteten Typen) zuweisen kannst. Deshalb kannst du auf diesem Objekt auch NUR mit dem Interface von Basisklasse operieren.
Was du aber machen kannst: Versuchen, zur Laufzeit den konkreten Typen erraten, indem du in einem mehr oder weniger langen if/else if - Konstrukt den konkret vorliegenden Typen (via dynamic_cast) errätst. Dadurch erhältst du aber ein neues Objekt mit anderem Typen (auch wenn die Adresse, die im Zeiger gespeichert ist, die selbe ist wie die des Basisklassenzeigers). Außerdem gilt es als schlechter Stil, wenn man das generell braucht.

Quote:
Im ünrigen kann man in C++ sehr wohl Funktionen schreiben die man mit verschiedenen Typen aufrufen kann.

Ja, kann man, aber am Ende sind das für jeden Typen eigene Funktionen (aus der Sicht des Compilers).

Quote:
Lustigerweise wird C/C++ auch bei Wiki Pedia nicht als statisch Typisiert geführt was auch richtig ist weil es Pauschal nicht stimmt. Es ist richtig das es statisch Typisierung da gibt aber eben auch dynamische.

Lustigerweise sagt mein Browser, dass es statisch typisiert ist.

Quote:
@franzf: Im Prinzip kann man das mit C++ das man untypisierten Speicher verwaltet und abwechselnd für String und anderes benutzt. Ich würde aber davon abraten das zu tun.

Ja, weil man dadurch sämtliche Typinformationen verliert. Dynamisch typisierte Programmiersprachen haben solche Probleme nicht.
Es gibt aber in C++ eine saubere Lösung, und die heißt std::any. Muss man explizit verwenden.
Back to top
View user's profile Send private message
forrestfunk81
Guru
Guru


Joined: 07 Feb 2006
Posts: 519
Location: münchen.de

PostPosted: Wed Sep 16, 2020 11:30 am    Post subject: Reply with quote

Ich bin kein C++ Experte. Ist folgender Pseudocode in C++ tatsächlich umsetzbar und gültig?
Code:
class A {
  function somethingAllOfThisTypeCanDo() {  ... }
}

class B extends A {
  function aBspecificOperation() { .. }
}

main {
  test(new A());
  test(new B());
}

function test(A instance)  {
  instance.somethingAllOfThisTypeCanDo(); // valid
  instance.aBspecificOperation(); // should be invalid and will fail
}


In Java und anderen mir bekannten statisch typisierten Sprachen ist die letzte Zeile nicht gültig und wird vom Compiler als Error erkannt. Falls das erlaubt ist, gäbe es meiner Meinung nach noch einen Grund mehr Rust einzusetzen.

alexander_ro wrote:
Dein Code Beispiel übergibt den einen Typ an den jeweils anderen das ändert aber nicht wirklich was an den Typen?Dein Code Beispiel übergibt den einen Typ an den jeweils anderen das ändert aber nicht wirklich was an den Typen?
Verstehe ich jetzt nicht was das mit dem Thema zu tun haben soll.
Code:

function something(var x, var y) {
  return x.startsWith(y) && y.startsWith(x) ;
}

Mein Beispiel geht davon aus, dass es während der Compilezeit nur eine einzige Implementierung von startsWith im Code (inklusive Sprache und aller Libs) gibt und zwar als String.startsWith(String) returning Boolean. Dadurch kann der Compiler eindeutig erkennen, dass x und y vom Typ String sein müssen.


alexander_ro wrote:

Bei einzelnen Daten kann er das nicht erkennen. Die meisten Speicherlecks die ich kenne vergessen einfach das ganze frei zu geben. Der andere häufige Fehler ist Speicher zu Nutzen der nicht da ist.

Die letzten beiden Fehler können eben nicht bei Rust oder Java auftreten (wenn du hier memory allocation and deallocation meinst).
_________________
# cd /pub/
# more beer
Back to top
View user's profile Send private message
franzf
Advocate
Advocate


Joined: 29 Mar 2005
Posts: 4545

PostPosted: Wed Sep 16, 2020 11:59 am    Post subject: Reply with quote

forrestfunk81 wrote:
Ich bin kein C++ Experte. Ist folgender Pseudocode in C++ tatsächlich umsetzbar und gültig?
Code:
class A {
  function somethingAllOfThisTypeCanDo() {  ... }
}

class B extends A {
  function aBspecificOperation() { .. }
}

main {
  test(new A());
  test(new B());
}

function test(A instance)  {
  instance.somethingAllOfThisTypeCanDo(); // valid
  instance.aBspecificOperation(); // should be invalid and will fail
}


In Java und anderen mir bekannten statisch typisierten Sprachen ist die letzte Zeile nicht gültig und wird vom Compiler als Error erkannt.

Keine Bange, ist auch bei C++ so.
Wie im anderen Post schon geschrieben, kann man aber mit dynamic_cast das A in B konvertieren. Wenn erfolgreich kann man dann aBspecificOperation() aufrufen.
Back to top
View user's profile Send private message
alexander_ro
Guru
Guru


Joined: 22 Nov 2014
Posts: 318

PostPosted: Wed Sep 16, 2020 2:30 pm    Post subject: Reply with quote

Quote:
NUR mit dem Interface von Basisklasse operieren.

Das ist schlicht nicht wahr ... ausfertig. Man muss auch nicht Typen raten so ein Quatsch.

Quote:
Die letzten beiden Fehler können eben nicht bei Rust oder Java auftreten

Das ist nur teilweise richtig.
Back to top
View user's profile Send private message
Christian99
Veteran
Veteran


Joined: 28 May 2009
Posts: 1231

PostPosted: Wed Sep 16, 2020 2:44 pm    Post subject: Reply with quote

alexander_ro wrote:
Quote:
NUR mit dem Interface von Basisklasse operieren.

Das ist schlicht nicht wahr ... ausfertig. Man muss auch nicht Typen raten so ein Quatsch.


Doch, ist wahr: https://wandbox.org/permlink/VJgwnEGUYWf975xd
Back to top
View user's profile Send private message
alexander_ro
Guru
Guru


Joined: 22 Nov 2014
Posts: 318

PostPosted: Wed Sep 16, 2020 2:47 pm    Post subject: Reply with quote

Nein ist nicht wahr ich habe schon oft genug anderes gemacht.

Was steht auf der Seite ich sehe da nur die Kästchen mit den Zahlen. Chinesischer oder Kyrillischer Zeichensatz ... ???
Back to top
View user's profile Send private message
asturm
Developer
Developer


Joined: 05 Apr 2007
Posts: 7912
Location: Austria

PostPosted: Wed Sep 16, 2020 2:54 pm    Post subject: Reply with quote

alexander_ro wrote:
Der Airbag tötet unschuldige Menschen weil die Implementierung einfach idiotisch gemacht ist. Muss halt für das Markting reichen und billig sein den Rest erledigen die Anwälte ... ein trauriges aber gängiges Industrie Konzept. Airbag sind genauso Dumm gemacht wie Garbage Collection. Gut Idee unbrauchbare Umsetzung.

Das genügt mir eigentlich schon um alles weitere von dir zu ignorieren.
_________________
backend.cpp:92:2: warning: #warning TODO - this error message is about as useful as a cooling unit in the arctic
Back to top
View user's profile Send private message
Christian99
Veteran
Veteran


Joined: 28 May 2009
Posts: 1231

PostPosted: Wed Sep 16, 2020 2:55 pm    Post subject: Reply with quote

wenn die seite geladen hast siehst du ein beispiel programm mit entsprechender fehlermeldung vom kompiler.

Zur Referenz:
Code:
struct A {
    void a() {};
};

struct B: A {
    void b() {};
};

int main()
{
    A* myA = new B();
    myA->b(); //error: 'struct A' has no member named 'b'
}
Back to top
View user's profile Send private message
forrestfunk81
Guru
Guru


Joined: 07 Feb 2006
Posts: 519
Location: münchen.de

PostPosted: Wed Sep 16, 2020 2:55 pm    Post subject: Reply with quote

alexander_ro wrote:
Quote:
Die letzten beiden Fehler können eben nicht bei Rust oder Java auftreten

Das ist nur teilweise richtig.

Das hab ich in 20 Jahren Entwicklung noch nicht gesehen. Bitte ein Beispiel zeigen, sonst kann ich dir das nicht glauben.
_________________
# cd /pub/
# more beer
Back to top
View user's profile Send private message
alexander_ro
Guru
Guru


Joined: 22 Nov 2014
Posts: 318

PostPosted: Wed Sep 16, 2020 2:57 pm    Post subject: Reply with quote

Wenn Du keine Ahnung von Technik und den Unfallzahlen und Ursachen hast ist das nicht mein Problem. Das sind Fakten das Airbag Menschen töten ... klar die kann man ignorieren wie alle Fakten das ist Modern heute man muss es aber nicht. Ist Deine Sache.

Mach doch ist niemand verpflichtet es zu lesen ...
Back to top
View user's profile Send private message
alexander_ro
Guru
Guru


Joined: 22 Nov 2014
Posts: 318

PostPosted: Wed Sep 16, 2020 3:00 pm    Post subject: Reply with quote

Das ist Sinnlos wenn ich jetzt ein Beispiel Suche schreibst Du das geht nicht als Antwort. Kostet auch viel Zeit aber wenn ich Morgen noch etwas Zeit frei habe suche ich vielleicht eins zusammen.
Back to top
View user's profile Send private message
forrestfunk81
Guru
Guru


Joined: 07 Feb 2006
Posts: 519
Location: münchen.de

PostPosted: Wed Sep 16, 2020 3:06 pm    Post subject: Reply with quote

alexander_ro wrote:
Das sind Fakten das Airbag Menschen töten

Klingt irgendwie wie die Argumentation von Impfgegnern. Aber lass mich raten ...
_________________
# cd /pub/
# more beer
Back to top
View user's profile Send private message
franzf
Advocate
Advocate


Joined: 29 Mar 2005
Posts: 4545

PostPosted: Wed Sep 16, 2020 3:52 pm    Post subject: Reply with quote

alexander_ro wrote:
Das ist Sinnlos wenn ich jetzt ein Beispiel Suche schreibst Du das geht nicht als Antwort. Kostet auch viel Zeit aber wenn ich Morgen noch etwas Zeit frei habe suche ich vielleicht eins zusammen.

Ich hab hier ne Kleinigkeit aufgesetzt, brauchst nur am Ende bei dem Kommentar deinen Code einfügen.

Code:
#include <iostream>
#include <cstring>

struct dog {
    virtual void bark() const =0;
};

struct husky final : dog {
    void bark() const override {
        std::cout << "Wuffsky!\n";
    }

    void fluff() const {
        std::cout << "Habvielfell!\n";
    }
};

struct bernhardiner final : dog {
    void bark() const override {
        std::cout << "Hrmmmwuffhrrmmm HICKS\n";
    }
   
    void rum() const {
        std::cout << "Rum her!\n";
    }
};

struct jonangi final : dog {
    void bark() const override {
        std::cout << "Kläff!\n";
    }
   
    void winter() const {
        std::cout << "Bibberbibber gibmirfell biggerbibber\n";
    }
};

int main(int argc, char** argv) {
    if (argc == 1) return -1;
   
    dog* d = nullptr;
   
    if (strcmp("husky", argv[1]) == 0)
        d = new husky;
    else if (strcmp("bernhardiner", argv[1]) == 0)
        d = new bernhardiner;
    else if (strcmp("jonangi", argv[1]) == 0)
        d = new jonangi;
    else {
        std::cout << "hund unbekannt\n"; return -1;
    }
   
    d->bark();
   
    // Und jetzt hier eine zum Hund passende Funktion aufrufen ohne "Raten"
}
Back to top
View user's profile Send private message
alexander_ro
Guru
Guru


Joined: 22 Nov 2014
Posts: 318

PostPosted: Wed Sep 16, 2020 4:23 pm    Post subject: Reply with quote

Quote:
Klingt irgendwie wie die Argumentation von Impfgegnern.

Ach und die wären?

Lies mal die Presse zu Unfallopfern der letzten Jahre. Da bekommst Du die Info am leichtesten. Du kannst Dir aber auch die Daten vom Bundesamt für Statistik liefern lassen und selbst auswerten. Dann bekommst Du einen genaueren Überblick zu dem Thema.

Aber mir ist das jetzt echt zu blöde weil ich keine Lust habe mich dauernd von euch Beleidigen zu lassen. Ich weiß ich bin Dumm habe nie Programmiert und sowieso keine Ahnung hab ich jetzt oft genug von euch gehört. Danke für die Blumen ... ich habe euch auch lieb.

Wenn keiner was zum Problem beizutragen hat dann soll er bitte wo anders hin gehen und da die Leute blöd anmachen. OK
Danke für das bisschen bisherige Hilfe.
Back to top
View user's profile Send private message
forrestfunk81
Guru
Guru


Joined: 07 Feb 2006
Posts: 519
Location: münchen.de

PostPosted: Wed Sep 16, 2020 7:52 pm    Post subject: Reply with quote

Tut mir leid. Den Kommentar hätte ich mir sparen sollen.

Alternative Desktops wurden ja schon diskutiert. An Rust wird aber wahrscheinlich über kurz oder lang kein Weg vorbei führen. dev-lang/rust-bin für schmallbrüstige Rechner wurde auch bereits genannt. DistCC-fähig ist der Compile Vorgang nicht. Aber vielleicht lohnt sich auch ein eigener Binhost, da du anscheinend mehrere Rechner hast. Compiler sind auch nicht gerade leichtgewichtig und werden immer umfangreicher. Sieht man ja auch an der Entwicklung der Compile-Zeiten vom GCC. Soviel schlimmer ist Rust da auch nicht.
_________________
# cd /pub/
# more beer
Back to top
View user's profile Send private message
Christian99
Veteran
Veteran


Joined: 28 May 2009
Posts: 1231

PostPosted: Wed Sep 16, 2020 8:18 pm    Post subject: Reply with quote

alexander_ro wrote:

Aber mir ist das jetzt echt zu blöde weil ich keine Lust habe mich dauernd von euch Beleidigen zu lassen. Ich weiß ich bin Dumm habe nie Programmiert und sowieso keine Ahnung hab ich jetzt oft genug von euch gehört. Danke für die Blumen ... ich habe euch auch lieb.


Da bin ich jetzt aber nicht bereit das so stehen zu lassen. Bisher hab ich hier nichts gelesen, was ich als Beleidigung empfinden würde. Gut, da sind die Gemüter ja verschieden, mag gut sein, dass du da das anders empfindest, aber zumindest für mich kann ich sagen, dass nichts von dem was ich geschrieben habe als Beleidigung gemeint war. Nach meinen bisherigen Erfahrungen hier im Forum würde ich auch vermuten, dass das für die anderen auch gilt (wenn das nicht zutrifft möge man mir widersprechen :) ) Falls du aber trotzdem etwas als Beleidigung empfunden hast, dann sag es, dann lässt sich da wahrscheinlich drüber reden.

Außerdem hat niemand gesagt, dass du nicht programmieren kannst und dumm bist. Das ist eine Unterstellung.
Wenn du aber Behauptungen aufstellst die offensichtlich und nachweislich (siehe Beispiele) falsch sind, dann musst du damit rechnen, dass man dir widerspricht. Kann ja sein, dass man sich mal irrt, oder man was anderes gemeint hat als es verstanden wurde, aber wenn man dann stur auf seiner Behauptung beharrt, ohne auf sein(e) Gegenüber einzugehen, dann wird eine qualifizierte Unterhaltung schwierig.

Wenn dann allerdings noch irgendwelche Unterstellungen kommen, dann hab auch ich langsam keine Lust mehr an einer Unterhaltung.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Goto page Previous  1, 2, 3  Next
Page 2 of 3

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum