# Rust und kein ende ...

## alexander_ro

Hallo,

bei meinem Netbook mit Atom x86 habe ich gerade Update gemacht. Da habe ich als USE-Flag -rust und -clang angebeben. Jetzt will er aber rust doch wieder installieren. Wäre schön der würde das nicht einfach machen sondern eine Fehlermeldung ausgeben das User Wunsch und Abhängigkeiten nicht zusammen passen.

Liegen tut das an librsvg und die braucht gtk+, adwaita und xfce-meta. Gibt es noch einen Desktop der kein rust benötigt?

Grüße

Alexander

----------

## firefly

Naja wenn ein paket eine hard dependencie auf rust hat kann gentoo da auch wenig machen.

Useflags dienen nur dafür um optionale features zu steuern.

----------

## Josef.95

```
eix -U rust

No matches found
```

 Demnach gibt es anscheinend kein einziges Paket im tree mit rust USE-Flag.

Es gibt aber (für schwache Rechner auf denen das bauen sehr lange dauern kann) dev-lang/rust-bin

welches man alternativ zur selbstgebauten Variante nutzen kann.

----------

## alexander_ro

Ja aber wozu brauche ich dann eine Sourcecode Linux Distribution wenn ich dann immer mehr Binärpakete installiere. Ich will aber aus anderen Gründen weder llvm, clang und rust nicht auf dem System haben. Warum will hier so keiner wissen.

Das Gentoo da nicht viel machen kann ist mir klar das meinte ich auch nicht.

Danach schon: https://packages.gentoo.org/useflags/rust

Die Frage war aber auch mehr ob es noch alternativen gibt für Desktop ohne die drei oben genannten?

----------

## Josef.95

 *alexander_ro wrote:*   

> Danach schon: https://[...]

 

Hm ja, aber das zeigt doch nur mal wieder das man nicht alles glauben sollte was einem da so im Webbrowser angezeigt wird ;-)

(IUSE=rust gibt es bei den beiden gelisteten Paketen (firefox und thunderbird) schon seit Jahren nicht mehr)

Ich vertraue da eher dem localen tree mit dem man tatsächlich dann auch baut :)

----------

## Christian99

 *alexander_ro wrote:*   

> Ja aber wozu brauche ich dann eine Sourcecode Linux Distribution wenn ich dann immer mehr Binärpakete installiere. Ich will aber aus anderen Gründen weder llvm, clang und rust nicht auf dem System haben. Warum will hier so keiner wissen.
> 
> Das Gentoo da nicht viel machen kann ist mir klar das meinte ich auch nicht.
> 
> Danach schon: https://packages.gentoo.org/useflags/rust
> ...

 

Auf einen schnellen Blick scheint mein KDE kein llvm und rust zu brauchen bin mir nicht sicher, ob man KDE ohne gtk+ bekommt, musst du mal probieren, weitere Desktop environments die du ausprobieren kannst findest du hier: https://wiki.gentoo.org/wiki/Desktop_environment

----------

## firefly

 *Christian99 wrote:*   

> 
> 
> Auf einen schnellen Blick scheint mein KDE kein llvm und rust zu brauchen bin mir nicht sicher, ob man KDE ohne gtk+ bekommt, musst du mal probieren, weitere Desktop environments die du ausprobieren kannst findest du hier: https://wiki.gentoo.org/wiki/Desktop_environment

 

Wie kommst du auf KDE? alexander_ro hat in seinem eingangspost was von xfce angegeben.

Und da xfce gtk+ verwendet kommt man wohl nicht ohne gtk+ aus.

Das einzige was eventuell hilft, ist zu verhindern, dass librsvg installiert wird

----------

## Christian99

wie gesagt, wenn sich KDE ohne gtk+ bauen lässt sollte es gehen, kde sachen und qt haben keine direkten abhängigkeiten auf librsvg clang llvm oder rust.

und xfce ist ja gtk passiert, deswegen wird das halt nicht ohne gtk+ gehen, aber es gibt ja auch nicht gtk+ passierte DEs, zum Beispiel KDE, lxqt u.a.

Deswegen würde ich es nicht automatisch als ausgeschlossen ansehen, dass man einen Linux Desktop ohne gtk+ aufsetzen kann. Nur etwas ungewöhnlich  :Smile: 

----------

## alexander_ro

Ich dachte die Anzeige im Webbrowser wird aus einer halbwegs aktuellen Paketliste generiert.

Ich weiß wie ich suche welche installierten Pakete eine Abhängigkeit zur librsvg haben. Wie man das für alle Pakete macht finde ich aber irgendwie nicht?

So findet es welche eine Abhängigkeit zu einem installiertem Paket hat:

```

equery depends librsvg

```

----------

## firefly

 *alexander_ro wrote:*   

> 
> 
> So findet es welche eine Abhängigkeit zu einem installiertem Paket hat:
> 
> ```
> ...

 

Das funktioniert aber auch nur wenn das paket installiert ist.

Wenn du wissen willst welches paket von einem anderen paket bei z.b. einem "update world" als abhängigkeit hinzugenommen wird dann füge dem emerge befehl dem parameter "-t" (tree) hinzu.

Dann werden die abhängigkeiten in einer tree struktur aufgezeigt.

----------

## Christian99

für nicht installierte pakete ist das auch ein bisschen schwierig, da es ja sehr auf die USE flags ankommt.

trag mal gtk+ in package.mask ein und schau was passiert  :Smile: 

----------

## Josef.95

```
equery depends librsvg -a
```

 tut es zb :)

Und ja, reverse deps auflisten für schon installierte Pakete dann am besten via 

```
emerge -pvc librsvg
```

/edit: btw, es gibt aber auch noch die alte librsvg-2.40.21 Version (mit bekannten Sicherheitslücken) im Tree, die noch ohne rust auskommt.

----------

## alexander_ro

Ja -a hat geholfen ich habe das in der man Page irgendwie nicht gesehen.

Ich dachte wenn man die Liste die man da bekommt mit der der existierender Desktop System abgleicht müsste man die finden die ohne auskommen.

Das es die alte Version noch gibt weiß ich die ist ja noch installiert aber er würde halt beim Update rust haben wollen. Wenn ich das jetzt in die package.mask eintrage wird ja nur das Update verhindert. Eine wirklich Zukunftsorientierte Lösung scheint mir das nicht zu sein.

----------

## Christian99

nun, sich grundsätzlich llvm/clang/rust zu verweigern ist auch nicht sonderlich zukunftsorientiert....

ich habe eigentlich gemeint, dass du ein system ganz ohne gtk+ machen solltest, weil einfach nur nicht upzudaten ist, glaub ich, nicht wirklich eine Lösung...

----------

## alexander_ro

Was ist denn an llvm/clang/rust so Zukunftsorientiert? Die versuchen Probleme zu lösen die java, php und andere lösen wollten und kläglich gescheitert sind. Ich kann mich an die Werbesprüche von SUN noch gut erinnern java keine Insel und besser als C++. Nichts davon wurde erfüllt java ist eine Insel und die Programmierer bauen damit genauso viele Speicherlecks wie mit jeder anderen Programmiersprache. Aber die Firma ist tot ... Oracel reitet nun den toten Gaul weiter. Hätte Java keinen Milliarden Dollar schweren Konzern als Lebenselixier würde schon lange keiner mehr nach Java krähen. Rust ist nicht besser das Marketing von den Mozis verkauft auch nur alten Wein in neuen Schläuchen. Warum man vom gcc zu clang wechseln sollte konnte mir auch noch keiner erklären. Rust ist ein mix aus Perl, Pascal und C++. Die Welt wird nicht besser wenn man altes Wissen nur umformuliert und weiter verwendet. Man müsste schon zu neuen Konzepten greifen das tut aber niemand. 

Ich habe es schon mal in die package.mask eingetragen der will dann kein neues gtk+ installieren entfernt aber das alte auch nicht.

Dann muss ich das aber nicht nur Maskieren sondern auch deinstallieren und dann schauen was emerge bei einem Update daraus macht?

<Edit>

Ich habe das mal so probiert gtk+ entfernt und dann wieder das Update gestartet. Das sagt nun das alles was die Abhängigkeit gtk+ erfüllen könnte maskiert ist und bricht ab.

</Edit>

----------

## mike155

 *Christian99 wrote:*   

> nun, sich grundsätzlich llvm/clang/rust zu verweigern ist auch nicht sonderlich zukunftsorientiert....

 

Wenn ich mir anschaue, wie viele Programmiersprachen es schon heute gibt - und wie viele neue Sprachen jedes Jahr entworfen werden - dann ist die Zukunft doch klar: jedes Paket wird in seiner eigenen Programmiersprache geschrieben werden. Und auch das ist noch nicht das Ende der Fahnenstange. Viele Pakete werden mehr als eine Programmiersprache benötigen.

Meine Kristallkugel sagt also für ein typisches Gentoo-System in 20 Jahren voraus:  

ungefähr 100 Pakete, die man installieren will (in /var/lib/portage/universum, ehemals /var/lib/portage/world)

diese ziehen ca. 5.000 bis 10.000 weitere Pakete rein, davon ca. 1.000 Pakete für User und Gruppen, 2.000 Pakete mit Compilern, Interpretern und VMs für diverse Programmiersprachen und noch 5.000 Pakete mit Libraries, die von irgendwelchen anderen Paketen reingezogen werden.

Sehe ich das zu pessimistisch?

----------

## alexander_ro

Würde mich nicht Wundern wenn es so kommt. Auf meinen Rechnern versuche ich das so lange wie möglich zu vermeiden ...  :Smile: 

Beim Abgleich der Paketlisten bin ich über Lumina gestolpert. Der benutzt qt5 das ist jetzt auch nicht mein Liebling aber immer noch das kleiner Übel. Früher war bei qt auch nur C/C++ in Verwendung ob das heute auch noch so ist weiß ich nicht ich hoffe mal. Ich habe gestern Abend mal die Installation gestartet der ist aber noch nicht fertig (ca. 40 Pakete). Ist ja nur ein alter Atom ... besserer Taschenrechner.

Die schreiben das die keine Linux spezifischen Sachen wie systemd, dbus, *kit, usw. verwenden. Systemd benutze ich jetzt ja auch nicht bei den anderen könnte das auch ein Vorteil sein und das System übersichtlicher machen. Habt ihr Erfahrung mit Lumina?

----------

## Christian99

Zunächst mal ist es zukunftsorientiert, weil es nach momentaner Tendenz immer mehr Leute/Projekte verwenden. Erst mal sagt das nichts über die Qualität aus.

 *mike155 wrote:*   

> 
> 
> Meine Kristallkugel sagt also für ein typisches Gentoo-System in 20 Jahren voraus:
> 
>     ungefähr 100 Pakete, die man installieren will (in /var/lib/portage/universum, ehemals /var/lib/portage/world)
> ...

 

Wenn es so kommt, dann kommt es so. Es steht jedem Programmierer/Entwickler frei, die Sprache seiner Wahl zu wählen für sein Projekt. Wenn dir das nicht passt, dann darfst du halt das jeweilige Programm/Bibliothek nicht verwenden. Kannst dann ja selber was machen in der Sprache deiner Wahl, oder drauf verzichten.

 *alexander_ro wrote:*   

> 
> 
> Was ist denn an llvm/clang/rust so Zukunftsorientiert? Die versuchen Probleme zu lösen die java, php und andere lösen wollten und kläglich gescheitert sind. Ich kann mich an die Werbesprüche von SUN noch gut erinnern java keine Insel und besser als C++. Nichts davon wurde erfüllt java ist eine Insel und die Programmierer bauen damit genauso viele Speicherlecks wie mit jeder anderen Programmiersprache. Aber die Firma ist tot ... Oracel reitet nun den toten Gaul weiter. Hätte Java keinen Milliarden Dollar schweren Konzern als Lebenselixier würde schon lange keiner mehr nach Java krähen. Rust ist nicht besser das Marketing von den Mozis verkauft auch nur alten Wein in neuen Schläuchen. Warum man vom gcc zu clang wechseln sollte konnte mir auch noch keiner erklären. Rust ist ein mix aus Perl, Pascal und C++. Die Welt wird nicht besser wenn man altes Wissen nur umformuliert und weiter verwendet. Man müsste schon zu neuen Konzepten greifen das tut aber niemand.
> 
> 

 

Danke für die Erleuchtung, wahrscheinlich kommen meine bisherigen anderen Erfahrungen mit Rust nur durch meine rosarote Brille....

----------

## alexander_ro

Mehr als C/C++ verwenden?

Nur weil mehr Leute hinter etwas her laufen ist es nicht Zukunftsorientiert.

 *Quote:*   

> 
> 
> Wenn es so kommt, dann kommt es so. Es steht jedem Programmierer/Entwickler frei, die Sprache seiner Wahl zu wählen für sein Projekt. Wenn dir das nicht passt, dann darfst du halt das jeweilige Programm/Bibliothek nicht verwenden. Kannst dann ja selber was machen in der Sprache deiner Wahl, oder drauf verzichten.
> 
> 

 

Mach ich doch ich werfe zur Zeit Laufend Software von den Rechnern und ersetze die durch andere. Wenn die Mozies glauben den Stein der Weisen gefunden zu haben dürfen die gerne den Stein an der Realität zerschlagen ... er wird nicht halten was er verspricht. Ich muss nicht jeder IT Ente hinterher laufen.

Es gibt nicht viel das Rust verwendet. Ich glaube das die Erfahrungen mit der neuen Programmiersprache gering sind. Gerade wenn es um nicht Mozilla Projekte geht. Sicher kann man mit Einfluss den Mozilla sicher hat wichtig System Bibliotheken umschreiben lassen und so an Verbreitung gewinnen. Der letzte der Versuchte die alt Erprobten Konzepte zu verdrängen war Systemd und ist kläglich gescheitert. Das Systemd so weit gekommen ist wie er ist liegt auch nur daran das die Linux Entwicklung heute 90% Kommerz ist der mit Kapital Macht durchsetzt was er will. Das heißt aber nicht das das durchgesetzte Zukunftsorientiert ist sondern nur das es eine gewisse Verbreitung erlangt. Es ist schade das die recht Innovative Vergangenheit bei der Masse der OpenSource Projekte dem Hinterherlaufen von Kommerziellem Ruhm gewichen ist.

Lumina läuft schon mal muss ich jetzt mal testen und suchen was ich alles noch installieren muss und wie man den alten xfce wieder los wird.

----------

## forrestfunk81

 *alexander_ro wrote:*   

> Was ist denn an llvm/clang/rust so Zukunftsorientiert? Die versuchen Probleme zu lösen die java, php und andere lösen wollten und kläglich gescheitert sind. Ich kann mich an die Werbesprüche von SUN noch gut erinnern java keine Insel und besser als C++. Nichts davon wurde erfüllt java ist eine Insel und die Programmierer bauen damit genauso viele Speicherlecks wie mit jeder anderen Programmiersprache. Aber die Firma ist tot ... Oracel reitet nun den toten Gaul weiter. Hätte Java keinen Milliarden Dollar schweren Konzern als Lebenselixier würde schon lange keiner mehr nach Java krähen. Rust ist nicht besser das Marketing von den Mozis verkauft auch nur alten Wein in neuen Schläuchen. Warum man vom gcc zu clang wechseln sollte konnte mir auch noch keiner erklären. Rust ist ein mix aus Perl, Pascal und C++. Die Welt wird nicht besser wenn man altes Wissen nur umformuliert und weiter verwendet. Man müsste schon zu neuen Konzepten greifen das tut aber niemand. 

 

Wow! Da frag ich mich schon, ob du schon mal eine Zeile Code geschrieben hast. Keine der von dir genannten Sprachen hat die gleichen Konzepte. Die sind sich noch nicht mal ähnlich. Und natürlich kann man immer Speicherlecks bauen, wenn man nicht aufpasst. Der Compiler oder die Runtime kann doch nicht erkennen, ob die Referenz vergessen wurde oder tatsächlich benötigt wird. Der wesentliche Unterschied ist, wieviel Zusatzaufwand es ist bzw. an wieviele Sachen man zusätzlich zur Programmlogik noch denken muss, um keine Speicherlecks zu verursachen.

Und ja, es gibt unglaublich viele Programmiersprachen und viele davon werden sicherlich wieder verschwinden, aber das man nicht alles mit der gleichen Sprache macht, sollte auch einleuchten. Klar kann man alles auch in Assembler schreiben, das dauert halt nur Jahrhunderte und wird weder sicherer noch weniger fehleranfällig. Nimm das richtige Tool für den richtigen Zweck.

Alles in allem finde ich Rust eine sehr gute Entwicklung. Auch wenn ich gerade ziemlich genervt davon bin, da sogar mein Raspberry das kompilieren möchte (ffmpeg mit default svg USE Flag -> gnome-base/librsvg).

----------

## Christian99

 *alexander_ro wrote:*   

> 
> 
> Lumina läuft schon mal muss ich jetzt mal testen und suchen was ich alles noch installieren muss und wie man den alten xfce wieder los wird.

 

```
emerge -c xfce-meta
```

?

oder was auch immer du für xfce emerged hast

----------

## alexander_ro

 *Quote:*   

> 
> 
> Keine der von dir genannten Sprachen hat die gleichen Konzepte.
> 
> 

 

Das kommt jetzt darauf an was Du als Konzept ansiehst. Nenn doch mal ein Beispiel für unterschiedliche Konzepte?

Aber nur weil die Syntax etwas abweicht ist es kein neues Konzept.

Java ist mit der Aussage angetreten das es keine Speicherlecks und keine zu kleinen Speicherbereiche mehr geben wird. Nach eigenen Aussagen war das Ziel die stärken von C++ zu haben und die schwächen weg zu lassen. Das konnten die aber in RL nicht erfüllen.

 *Quote:*   

> 
> 
> oder was auch immer du für xfce emerged hast
> 
> 

 

Genau das ist das Problem ... bei manchen meiner Rechner ist das schon sehr lange her ich weiß das heute nicht mehr. Muss wohl mal die Installierten Pakete durchgehen und einzeln testen was noch geht und wie.

----------

## Christian99

 *alexander_ro wrote:*   

> Das kommt jetzt darauf an was Du als Konzept ansiehst. Nenn doch mal ein Beispiel für unterschiedliche Konzepte? 

 

z.B. Kompilezeit Memory Management und Ownership

hast du eix?

```
eix -C xfce-base -o -C xfce-extra --world
```

du kannst auch über

```
emerge -cp gtk+
```

 gehen,

darüber findest du dann alles, was gtk+ benötigt, das musst du dann nach und nach entfernen.

----------

## forrestfunk81

 *alexander_ro wrote:*   

>  *Quote:*   
> 
> Keine der von dir genannten Sprachen hat die gleichen Konzepte.
> 
>  
> ...

 

Wie wäre es mit sowas grundsätzlichem wie statischer vs dynamischer Typisierung oder Garbage Collection. Beides trifft auf unterscheidliche von dir genannte Sprachen zu bzw. nicht zu.

 *alexander_ro wrote:*   

> 
> 
> Java ist mit der Aussage angetreten das es keine Speicherlecks und keine zu kleinen Speicherbereiche mehr geben wird. Nach eigenen Aussagen war das Ziel die stärken von C++ zu haben und die schwächen weg zu lassen. Das konnten die aber in RL nicht erfüllen.
> 
> 

 

Genau, Garbage Collection. Jetzt auch bei Rust. Nicht mehr referenzierte Objekte werden aus dem Speicher entfernt und man muss das nicht manuell machen (was gerne vergessen wird). Wenn aber die Referenz selbst nicht aufgeräumt wird, kann der Garbage Collector auch nichts machen, denn er weiß nicht ob der Entwickler die Daten absichtlich für spätere Wiederverwendung weiterhin referenziert hat. Ein bisschen Mitdenken muss man natürlich schon. Trotzdem ist das ein Feature, welches (erfolgreich) dabei unterstützt, weniger Speicherlecks zu produzieren. Du sagst ja auch nicht, Airbags sind nutzlos, weil es sterben ja immer noch Menschen.

 *alexander_ro wrote:*   

> 
> 
>  *Quote:*   
> 
> oder was auch immer du für xfce emerged hast
> ...

 

Kuck mal in /var/lib/portage/world was alles aus xfce-base oder xfce-extras installiert ist.

----------

## alexander_ro

Garbage Collection ist kein Konzept an sich sondern eine Funktionale Einheit von einem Konzept dem Memory Management.

Ja die gibt es bei manchen und bei manchen nicht. Macht keinen großen Unterschied da sie in keiner Sprache wirklich funktionieren. Das Problem wurde nur verlagert aber nicht gelöst. Auch Rust löst das Problem nicht.

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.

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.

Kompilierzeit Memorymanagement und die Owner funktionieren nur wenn der Programmiere Zusatzinfos liefert. Das verschiebt nur das Problem löst es aber nicht. Wir erinnern uns Programmierer waren die Wesen die andauern was vergessen und falsch machen ...  :Smile: 

Entweder ändert man das Memory Management so das es autonom das richtige tut oder man hat kein neues Konzept. Fehler machen können alle alten schon das kann man dann nicht als neu bezeichnen nur weil die Fehler jetzt an einer anderen stelle passiert. 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.

<Edit>

Ja eix habe ich. Ich guck mir das mal an.

</Edit>

----------

## forrestfunk81

 *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   :Rolling Eyes:  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.

----------

## alexander_ro

 *Quote:*   

> rgendwie hab ich so eine Argumentation erwartet  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

----------

## forrestfunk81

 *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   :Rolling Eyes: 

----------

## alexander_ro

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.

----------

## franzf

 *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.

```
name : str = "Hubert"

alter : int = 42
```

Damit sind wohl JavaScript und Python statically typed, oder?

Auf der anderen Seite C++...

```
auto i = 42;
```

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

----------

## alexander_ro

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 ...  :Wink:  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 

```
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 ...

----------

## franzf

 *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.

----------

## forrestfunk81

 *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.
> ...

 

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++...
> 
> ```
> ...

 

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. 

```

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.

```

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  :Wink:  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.

----------

## alexander_ro

 *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.

```

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.

----------

## franzf

 *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.

----------

## forrestfunk81

Ich bin kein C++ Experte. Ist folgender Pseudocode in C++ tatsächlich umsetzbar und gültig?

```
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.
> 
> ```
> ...

 

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).

----------

## franzf

 *forrestfunk81 wrote:*   

> Ich bin kein C++ Experte. Ist folgender Pseudocode in C++ tatsächlich umsetzbar und gültig?
> 
> ```
> class A {
> 
> ...

 

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.

----------

## alexander_ro

 *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.

----------

## Christian99

 *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

----------

## alexander_ro

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 ... ???

----------

## asturm

 *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.

----------

## Christian99

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

Zur Referenz:

```
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'

}
```

----------

## forrestfunk81

 *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.

----------

## alexander_ro

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 ...

----------

## alexander_ro

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.

----------

## forrestfunk81

 *alexander_ro wrote:*   

> Das sind Fakten das Airbag Menschen töten

 

Klingt irgendwie wie die Argumentation von Impfgegnern. Aber lass mich raten ...

----------

## franzf

 *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.

```
#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"

}
```

----------

## alexander_ro

 *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.

----------

## forrestfunk81

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.

----------

## Christian99

 *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  :Smile:  ) 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.

----------

## franzf

 *alexander_ro wrote:*   

> 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.

 

Ich dachte, das Problem wäre mit der Installation eines anderen DEs gelöst?

Wenn nicht hier mein Beitrag:

Du schreibst weiter oben bezüglich rust: "Ich will aber aus anderen Gründen weder llvm, clang und rust nicht auf dem System haben."

Das ist zum Glück nicht nötig, weil rust nur eine build dependency ist. Da sollte rust-bin auch wurscht sein, oder?

Also: dev-lang/rust in package.mask, damit das nicht mehr installiert wird.

emerge -1 librsvg - das zieht dann rust-bin rein.

Wenn das fertig ist, einfach emerge -ca virtual/rust, das sollte auch rust-bin mit entfernen.

Somit hast du nur für eine sehr kurze Zeit rust installiert und bist es gleich wieder los (bis zum nächsten librsvg update, was bei stable arch eher selten passiert).

----------

