Forum: PC Hard- und Software C# oder Python lernen als Wirtschaftsinformatiker?


von Rolf R. (dankobum)


Lesenswert?

Ein Abiturient, der gerade sein Abi gemacht hat, will im Oktober mit dem 
Studium Wirtschaftsinformatik beginnen.

Java kennt er schon aus dem Leistungskurs Informatik.

Welche Programmiersprache würdet ihr zum Lernen empfehlen, C# oder 
Python, um die freie Zeit von heute bis zum Studium zu nutzen?

von wer (Gast)


Lesenswert?

Excel/VBA

von IT-Abteilung (Gast)


Lesenswert?

Natürlich Python!


wer schrieb:
> Excel/VBA
🤦🤦🤦

von Udo S. (urschmitt)


Lesenswert?

wer schrieb:
> Excel/VBA

Noch wichtiger:
Outlook, Powerpint und MS-Teams

sowie ein gutes Buzzword Lexikon

;-)

von wer? (Gast)


Lesenswert?

Jeder Unternehmen dieser Erde hat Excel installiert, besonders im 
BWL-Bereich. Von Python kann da gar nicht die Rede sein.

Außerdem kann man fast Alles mit VBA schreiben, was mit Python auch 
ginge.

von Nano (Gast)


Lesenswert?

Rolf R. schrieb:
> Welche Programmiersprache würdet ihr zum Lernen empfehlen, C# oder
> Python, um die freie Zeit von heute bis zum Studium zu nutzen?

C

von Nano (Gast)


Lesenswert?

Nano schrieb:
> Rolf R. schrieb:
>> Welche Programmiersprache würdet ihr zum Lernen empfehlen, C# oder
>> Python, um die freie Zeit von heute bis zum Studium zu nutzen?
>
> C

Und zwar ohne #

von c-hater (Gast)


Lesenswert?

Rolf R. schrieb:

> Welche Programmiersprache würdet ihr zum Lernen empfehlen, C# oder
> Python, um die freie Zeit von heute bis zum Studium zu nutzen?

Wenn nur die Wahl zwischen diesen beiden Sprachen in Frage kommt, dann 
ganz klar: C#.

von Rolf R. (dankobum)


Lesenswert?

c-hater schrieb:
> Rolf R. schrieb:
>
>> Welche Programmiersprache würdet ihr zum Lernen empfehlen, C# oder
>> Python, um die freie Zeit von heute bis zum Studium zu nutzen?
>
> Wenn nur die Wahl zwischen diesen beiden Sprachen in Frage kommt, dann
> ganz klar: C#.

Ich bin auch offen für andere Sprachen.

Erst dachte ich, Excel/VBA wäre ein Witz gewesen. Jetzt habe ich mir 
dazu aber mal ein paar Videos auf youtube angeschaut und gesehen, dass 
es nicht schaden kann, das zu können als Wirtschaftsinformatiker.

Ich denke, es wird darauf hinauslaufen, von diesen 3 die Grundlagen bis 
Oktober zu lernen:
- Python
- C#
- Excel/VBA

Am Ende hat er dann Grundlagenwissen von allen drei und kann dann bei 
Bedarf später tiefer einsteigen.

: Bearbeitet durch User
von c-hater (Gast)


Lesenswert?

Rolf R. schrieb:

> Ich denke, es wird darauf hinauslaufen, von diesen 3 die Grundlagen bis
> Oktober zu lernen:
> - Python
> - C#
> - Excel/VBA

Das wird eng mit dem Zeitplan. Man kann nicht wirklich hinreichend diese 
drei Sprachen in diesem Zeitrahmen lernen. Die Sprache ist ja immer nur 
die halbe Miete (bestenfalls). Die eigentliche Macht ergibt sich immer 
erst durch die Kenntnis der durch die Sprache erreichbaren Frameworks.

Das können nichtmal Leute, die sowieso seit Jahrzehnten mit immer wieder 
anderen Sprachen behelligt wurden und das deshalb schon ein wenig 
gewohnt sind (und ggf. auch verwandte Sprachen oder erreichbare 
Frameworks schon vorher kannten). Zumindest würde es auch für die etwas 
knapp werden.

Für jemanden, der eigentlich keine Ahnung, keine Erfahrung und keine 
Vorkenntnisse hat: hoffnungslos unrealistisch.

von Rolf R. (dankobum)


Lesenswert?

c-hater schrieb:
> Für jemanden, der eigentlich keine Ahnung, keine Erfahrung und keine
> Vorkenntnisse hat: hoffnungslos unrealistisch.

Vorkenntnisse in Java sind ja vorhanden. Und C# z.B. ist relativ leicht 
zu lernen, wenn man schon Java kann.

Es geht ja auch nicht darum, in allen drei perfekt zu sein. Es geht 
darum, die Grundlagen zu kennen. Mit diesem Grundlagenwissen kann man 
dann später z.B. besser einschätzen, welche Sprache für welches Problem 
besser geeignet ist.

Tiefer einsteigen kann er dann später immer noch je nach den 
Anforderungen, die bei einer Werkstudentenstelle gefordert werden.

von c-hater (Gast)


Lesenswert?

Rolf R. schrieb:

> Vorkenntnisse in Java sind ja vorhanden. Und C# z.B. ist relativ leicht
> zu lernen, wenn man schon Java kann.

Was nützt C# ohne .net-Framework? Nahezu nix.

von Jan (Gast)


Lesenswert?

Nur, dass es .NET quasi überall gibt. C# ist eine super 
Applikationssprache, vor allem für GUIs. Und es ist echt fix.
Dazu lernst du vor allem modernes OOP. Kann nicht schaden, und wenn es 
nur dazu ist, zu wissen, dass man es nicht braucht ;)

Modernes VBA ist auch erstaunlich leistungsfähig und vielseitig. Aber 
Microsoft geht IMO in die Richtung einer neuen Skriptsprache, vba ist 
nicht unterstützt in o365 Web.

@op, lern Python. Das kannst du nämlich für alles benutzen, gerade für 
viel Kleinscheiß. Du lernst eh während des Studiums, welche Sprachen du 
brauchst. Außerdem geht’s häufig um Konzepte. Viel Spaß

von Ich nicht (Gast)


Lesenswert?

ABAP

von Nano (Gast)


Lesenswert?

Rolf R. schrieb:
> Ich denke, es wird darauf hinauslaufen, von diesen 3 die Grundlagen bis
> Oktober zu lernen:
> - Python
> - C#
> - Excel/VBA
>
> Am Ende hat er dann Grundlagenwissen von allen drei und kann dann bei
> Bedarf später tiefer einsteigen.

Nur hat er dann keine Ahnung wie unter der Haube verkettete Listen 
aufgebaut sind. Ebenso wird ihm ein tieferes Verständnis bezüglich Stack 
und Heap fehlen.

Und wenn das Studium beginnt, hat er kaum Zeit, da richtig einzusteigen.

Deswegen empfehle ich C.

von Jojo (Gast)


Lesenswert?

Das lernt er doch im Studium oder nicht?

von Axel S. (a-za-z0-9)


Lesenswert?

Rolf R. schrieb:
> Vorkenntnisse in Java sind ja vorhanden. Und C# z.B. ist relativ leicht
> zu lernen, wenn man schon Java kann.

Ich würde sogar sogar sagen, daß es redundant ist. C# ist die Sprache, 
die man mit Java eigentlich schaffen wollte. OK, abgesehen davon, daß es 
eine Nischensprache ist. Auch wenn für manche diese Nische die ganze 
Welt zu sein scheint:

Jan schrieb:
> Nur, dass es .NET quasi überall gibt

Wenn man Windows für "alles man es gibt" hält, dann ja. Aber ich habe 
schlechte Nachrichten für dich: die Tage von Windows sind gezählt. Das 
hat inzwischen sogar Microsoft eingesehen.

Mein Vorschlag wäre: mal ein radikal anderes Programmiersprachen 
Konzept auszuprobieren. Also Lisp oder Haskell. Oder - weil es weniger 
ungewohnt ist - Ruby. Oder wenn man beim althergebrachten bleiben will: 
eine moderne Interpretation wie z.B. Rust.

von Stefan H. (Firma: dm2sh) (stefan_helmert)


Lesenswert?

Cobol

von c-hater (Gast)


Lesenswert?

Axel S. schrieb:

> Jan schrieb:
>> Nur, dass es .NET quasi überall gibt
>
> Wenn man Windows für "alles man es gibt" hält, dann ja.

.net gibt es aber längst nicht mehr nur unter Windows. Naja, es heißt 
anderswo anders (nämlich mono) und stellt nur einen Subset der Features 
bereit, aber es existiert und funktioniert inzwischen erstaunlich gut. 
Und auch dieser Feature-Subset wird ständig aufgebohrt (und von der 
anderen Seite über .net Core geschrumpft). Es ist ganz klar, dass das 
Ziel ist, am Ende ein vereinheitlichtes systemübergreifendes Framework 
zu schaffen.

Um das NICHT zu erkennen, muß man wohl Axel S. heißen...

> Aber ich habe
> schlechte Nachrichten für dich: die Tage von Windows sind gezählt. Das
> hat inzwischen sogar Microsoft eingesehen.

Das bezweifele ich. Ganz ernsthaft. Die diversifizieren nur. Aber so 
lange sich mit Windows Geld verdienen läßt, werden die das tun. Nur 
Idioten würden ein OS aufgeben, was auf >>90% der Desktop-Systeme 
weltweit erfolgreich läuft und auf das unzählige wichtige 
Industrie-Anwendungen aufsetzen.

Und auch wieder:
Um das NICHT zu erkennen, muß man wohl Axel S. heißen...

von Mladen G. (mgira)


Lesenswert?

Access mit Macros ist als Datenbanksystem immer noch ungeschlagen und 
die Nachfrage wird in Zukunft exponentiell steigen!

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Nano schrieb:
> Rolf R. schrieb:
>> Ich denke, es wird darauf hinauslaufen, von diesen 3 die Grundlagen bis
>> Oktober zu lernen:
>> - Python
>> - C#
>> - Excel/VBA
>>
>> Am Ende hat er dann Grundlagenwissen von allen drei und kann dann bei
>> Bedarf später tiefer einsteigen.
>
> Nur hat er dann keine Ahnung wie unter der Haube verkettete Listen
> aufgebaut sind. Ebenso wird ihm ein tieferes Verständnis bezüglich Stack
> und Heap fehlen.

Abgesehen davon das die Liste falsch herum sortiert ist, muss er auch 
nicht wissen wie eine (doppelt) verkettete Liste, oder sonstwas unter 
der Haube aussieht, er ist als Wirtschaftsinformatiker in dieser 
Hinsicht Anwender, kein Entwickler.

> Und wenn das Studium beginnt, hat er kaum Zeit, da richtig einzusteigen.
>
> Deswegen empfehle ich C.

Als Entwickler ist C nie verkehrt, aber als Wirtschaftsinformatiker eher 
unwichtig; dagegen ist Excel/VBA absolut Sinnvoll und auch C# kann für 
einfache und schnell gebaute GUI-Programme gute Dienste Leisten.
C ist halt prozedurale Programmierung und damit für einen 
Wirtschaftsinformatiker deutlich weniger Wert als irgendwas 
Objektorientiertes.

Ich habe ursprünglich mit Basic, Assembler und C angefangen, später in 
der Schule kam dann Delphi und im Studium gings wieder zu C und C++. 
Aufgrund der absolut vermurksten Firmenpolitik von 
Borland/Embacadero/Inprise habe ich mich dann irgendwann komplett von 
Delphi abgewandt (was ich immer noch lieber als C++ und QT für GUIs 
genutzt habe) und kam schließlich zu C# was ich bis heute wenig bereue.

Beruflich nutze ich hingegen deutlich öfter Excel als mir lieb ist, 
einfach weil man da am schnellsten Ergebnisse bekommt. Auf 
Microcontrollern ASM oder C und die Entsprechenden GUIs auf den Rechnern 
meist mit C# wenn nicht gerade ein Webinterface als GUI genutzt wird.

: Bearbeitet durch User
von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Ich habe zwei Wirtschaftsinformatiker als Vorgesetzte. Beide haben 
keinen Schimmer von Programmierung. Der ältere von beiden hatte damals 
wenigstens mal einige Batchscripte erstellt. Damals gab es wohl noch 
kein VBA. Der jüngere hat mal etwas mit VBA gemacht. Jedoch nie 
ernsthaft.

Von anderen Sprachen haben sie keine Ahnung.
Während meines Studiums wurden die Wirtschaftsinformatiker gerne für die 
SAP-Programmierung verheizt. Keine Ahnung, in was das programmiert ist.

Wer als Wirtschaftsinformatiker überhaupt programmieren kann, gehört 
schon zur Oberschicht.

von (prx) A. K. (prx)


Lesenswert?

Informatik ist nicht (allein) die Wissenschaft vom Programmieren. Es 
gibt folglich Tätigkeiten für Informatiker, die Kenntnis in 
Programmierung verlangen. Und es gibt viele Tätigkeiten, die das nicht 
verlangen. Mit oder oder Wirtschaft.

von Udo S. (urschmitt)


Lesenswert?

c-hater schrieb:
> .net gibt es aber längst nicht mehr nur unter Windows. Naja, es heißt
> anderswo anders (nämlich mono) und stellt nur einen Subset der Features
> bereit, aber es existiert und funktioniert inzwischen erstaunlich gut.

Und wird wo genau eingesetzt?

Es ist für einen WI Ing wahrscheinlich völlig wuppe, aber zum ernsthaft 
programmieren tut man sich professionell nicht mehr eine Sprache an die 
nur auf einem Betriebssystem läuft.
Oder hast du Beispiele wo mono professionell eingesetzt wird?

In Zeiten von Cloud Computing, Virtualisierung und Container setzt 
keiner mehr im professionellen bereich nur auf Windows. Und Oberflächen 
sind mehr und mehr Web-Oberflächen.
Kann man gut finden, muss man nicht aber so sieht die Welt aus.

Und wenns Hardwarenah sein soll ist es immer noch C oder C++

von (prx) A. K. (prx)


Lesenswert?

Christian H. schrieb:
> Wer als Wirtschaftsinformatiker überhaupt programmieren kann, gehört
> schon zur Oberschicht.

Wenn ein Programmierer aufsteigt, ist er nur noch mit Besprechungen, 
Konferenzen und Präsentationen beschäftigt, und hat keine Zeit mehr, das 
Projekt programmtechnisch voran zu bringen.

Chefs in einem entsprechenden Umfeld müssen also wissen, wer unter den 
Programmierer unverzichtbar ist. Und die müssen unten halten, sonst 
fehlen sie. Wer aber besser koordinieren und labern als programmieren 
kann, wird da nicht gebraucht, und darf aufsteigen.

> Ich habe zwei Wirtschaftsinformatiker als Vorgesetzte. Beide haben
> keinen Schimmer von Programmierung.

q.e.d.

Wer stolz verkündet, dass ein Projekt sich voll auf seine Fähigkeiten 
als Programmierer stützt, der ist in der Hierarchie wahrscheinlich unten 
angesiedelt. Soviel zu Oberschicht. ;-)

: Bearbeitet durch User
von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Viele verwechseln das Erlernen einer Programmiersprache mit 
Programmieren lernen.

Es ist aber viel wichtiger, die Grundprinzipien des prozeduralen und 
OOP-Programmierens allgemein zu verstehen. Konzepte, Strukturen, 
Algorithmen ... und das kommt nur durch langjährige Praxis, egal in 
welcher Sprache.

Viel wichtiger ist der "analytische Blick", um ein Problem zu erfassen. 
Und das kommt nicht von jetzt auf gleich.

Natürlich benötigt man Kenntnisse in einer Programmiersprache, um das 
Erlernte auszuprobieren, aber ob im konkreten Fall nun die Klammern rund 
oder eckig sind oder am Ende einer Zeile ein Semikolon stehen muss oder 
nicht, ist sowas von egal ...

: Bearbeitet durch User
von Yalu X. (yalu) (Moderator)


Lesenswert?

Rolf R. schrieb:
> Ein Abiturient, der gerade sein Abi gemacht hat, will im Oktober mit dem
> Studium Wirtschaftsinformatik beginnen.

Dass der Abiturient hier nicht selber nachfragt, zeigt, dass er den
Wirtschaftsteil seines geplanten Studiengangs gar nicht mehr nötig hat,
Denn das A und O eines Wirtschaftlers beherrscht er schon bestens: das
Delegieren.

Mit dieser Fähigkeit verliert aber auch der Informatikteil an Bedeutung,
denn alles, was er dort lernen würde, lässt er zukünftig sowieso andere
erledigen.

Fazit: Der Abiturient muss nicht studieren, er kann sofort in den Job
einsteigen.

Damit er aber auch ohne Studium von seinem zukünftigen Vorgesetzten, der
ein waschechter BWLer sein wird, als Informatikexperte akzeptiert wird,
sollte er sich vorher noch zwei weitere Fähigkeiten (am besten in einem
VHS-Kurs) aneignen:

- den Vorgesetzten bei seinen Vorträgen beim Weiterblättern der
  Powerpoint-Präsentation unterstützen (erstellen muss er die
  Präsentation nicht können, das macht die Sekretärin)

- den Windows-Laptop des Vorgesetzten neuinstallieren, nachdem sich
  darauf so viel Mist aus dem Internet angesammelt hat, dass die
  Powerpoint-Präsentation nicht mehr ohne peinliche Pop-Ups durchläuft

SCNR ;-)


Zur eigentlichen Frage:

Ich würde die Sprache lernen, die laut Studienplan im Studium verwendet
wird. Falls die Frage darauf abzielt, welche Sprache in seinem späteren
Berufsleben von Nutzen sein wird: Jede Antwort darauf ist mit sehr hoher
Wahrscheinlichkeit falsch.

von Rolf R. (dankobum)


Lesenswert?

Yalu X. schrieb:
> Ich würde die Sprache lernen, die laut Studienplan im Studium verwendet
> wird.

Das ist Java. Java hat er aber schon im Informatikleistungskurs gehabt.

von Nano (Gast)


Lesenswert?

Jojo schrieb:
> Das lernt er doch im Studium oder nicht?

Als Wirtschaftsinformatiker?

Das hängt von den Modulen ab.
Da er im Wirtschaftsinformatikstudium aber kaum Module hat, die ins Low 
Level der Informatik absteigen, würde ich es für möglich halten, dass er 
das kaum lernt. Sicherlich kann das auch vom Prof abhängen.
Aber Wirtschaftsinformatik ist halt mehr High Level Sprachen wie C#, 
Java, JavaScript und jede Menge Webzeugs.
Und das Thema Wirtschaft muss auch noch irgendwo untergebracht werden, 
also fehlt die Zeit für Module die tief in die Materie einsteigen.

Und natürlich ist das von Bundesland zu Bundesland unterschiedlich.


Aber selbst wenn er jetzt reine Informatik studieren würde, würde ich 
ihm C empfehlen.
Weil auch da fängt man am Anfang meist mit Java an und macht dann ne 
Weile in den ersten Semestern Java ohne wirklich zu wissen, wie Java 
unter der Haube arbeitet. Später kommen dann natürlich die anderen 
Module dazu, wo dann C unabdingbar ist. Aber da ist es dann schon gut, 
wenn man C schon kann und vorher ist es gut, wenn man C schon kann, weil 
man dann auch über Java ein besseres Verständnis hat.

Letzten Endes macht man mit C nie etwas falsch, wenn man das lernt und 
kann.

von Nano (Gast)


Lesenswert?

Axel S. schrieb:
> Jan schrieb:
>> Nur, dass es .NET quasi überall gibt
>
> Wenn man Windows für "alles man es gibt" hält, dann ja. Aber ich habe
> schlechte Nachrichten für dich: die Tage von Windows sind gezählt. Das
> hat inzwischen sogar Microsoft eingesehen.

Es gibt noch Mono.

https://de.wikipedia.org/wiki/Mono_(Software)

von Nano (Gast)


Lesenswert?

Tim T. schrieb:
> Nano schrieb:
>> Rolf R. schrieb:
>>> Ich denke, es wird darauf hinauslaufen, von diesen 3 die Grundlagen bis
>>> Oktober zu lernen:
>>> - Python
>>> - C#
>>> - Excel/VBA
>>>
>>> Am Ende hat er dann Grundlagenwissen von allen drei und kann dann bei
>>> Bedarf später tiefer einsteigen.
>>
>> Nur hat er dann keine Ahnung wie unter der Haube verkettete Listen
>> aufgebaut sind. Ebenso wird ihm ein tieferes Verständnis bezüglich Stack
>> und Heap fehlen.
>
> Abgesehen davon das die Liste falsch herum sortiert ist, muss er auch
> nicht wissen wie eine (doppelt) verkettete Liste, oder sonstwas unter
> der Haube aussieht, er ist als Wirtschaftsinformatiker in dieser
> Hinsicht Anwender, kein Entwickler.

Ja und dann kommt so ein scheiß unperformanter Code als Ergebnis raus. 
Gerade weil er nicht weiß, wie das unter der Haube funktioniert.
Genau das ist die Folge davon.

Wer guten Code schreiben muss, muss wissen, wie es unter der Haube 
funktioniert. Man sollte sogar die Hardware kennen, damit man nicht auf 
die Schnappsidee kommt und glaubt, dass das Einfügen eines Wertes in 
eine verkettete Liste grundsätzlich schneller sei, als in ein nicht 
all zu großes Array.

> C ist halt prozedurale Programmierung und damit für einen
> Wirtschaftsinformatiker deutlich weniger Wert als irgendwas
> Objektorientiertes.

Der Wert erschließt sich dadurch, in dem man weiß, was in einer 
konkreten Situation vom High Level her performant ist, weil man es vom 
Low Level her einschätzen kann.

Und zu dem Rest deines Beitrags was du alles so nutzt.
Schön und gut, aber das trägt nichts zur Thematik bei.

von Nano (Gast)


Lesenswert?

Nano schrieb:
> Wer guten Code schreiben muss, muss wissen, wie es unter der Haube
> funktioniert. Man sollte sogar die Hardware kennen, damit man nicht auf
> die Schnappsidee kommt und glaubt, dass das Einfügen eines Wertes in
> eine verkettete Liste grundsätzlich schneller sei, als in ein nicht
> all zu großes Array.

Oben habe ich mich gerade unglücklich ausgedrückt. Mit Wert meine ich 
hier  ein weiteres Element.

von (prx) A. K. (prx)


Lesenswert?

Axel S. schrieb:
> die Tage von Windows sind gezählt

Verallgemeinert: Die Tage massenhafter, selbständig arbeitender zur 
Autarkie fähiger Systeme sind gezählt. Das zumindest ist der Trend.

von Nano (Gast)


Lesenswert?

Frank E. schrieb:
> Viele verwechseln das Erlernen einer Programmiersprache mit
> Programmieren lernen.
>
> Es ist aber viel wichtiger, die Grundprinzipien des prozeduralen und
> OOP-Programmierens allgemein zu verstehen. Konzepte, Strukturen,
> Algorithmen ... und das kommt nur durch langjährige Praxis, egal in
> welcher Sprache.
>
> Viel wichtiger ist der "analytische Blick", um ein Problem zu erfassen.
> Und das kommt nicht von jetzt auf gleich.
>
> Natürlich benötigt man Kenntnisse in einer Programmiersprache, um das
> Erlernte auszuprobieren, aber ob im konkreten Fall nun die Klammern rund
> oder eckig sind oder am Ende einer Zeile ein Semikolon stehen muss oder
> nicht, ist sowas von egal ...

Richtig, den analytischen Blick kriegst du aber nicht zwingend mit einer 
Hochsprache, weil du dafür wissen musst, wie das Zeug unter der Haube 
funktioniert.
Und diese Ahnung lernt man eben mit C, während die Hochsprache alles 
wegabstrahiert und sich dann der Nutzer wundert, warum seine Lösung, ein 
paar tausend Elemente in Listen einzufügen auf der gegebenen Hardware 
langsamer geht, als der Programmierguru, der dafür ein Array verwendet.

von Axel S. (a-za-z0-9)


Lesenswert?

Nano schrieb:
> Axel S. schrieb:
>> Jan schrieb:
>>> Nur, dass es .NET quasi überall gibt
>>
>> Wenn man Windows für "alles man es gibt" hält, dann ja. Aber ich habe
>> schlechte Nachrichten für dich: die Tage von Windows sind gezählt. Das
>> hat inzwischen sogar Microsoft eingesehen.
>
> Es gibt noch Mono.

Ach bitte! Das ein weiteres .net Framework das zu nichts kompatibel ist. 
Als ich Windows noch angefaßt habe mußte ich alle Nase lang eine neue 
Version des Frameworks installieren, weil irgendeine verk*ckte Software 
ein Feature ganz toll fand, das erst in der nächsten Version drin war.

Und jetzt verlassen wir das M$ Universum und stellen uns das ganze mit 
Mono vor ... Nein, das .net Projekt ist tot. Noch töter als Java, 
nachdem es von Oracle aufgekauft^W ausgeschlachtet wurde. Wenn Microsoft 
gewollt hätte, dann hätten sie .net ja plattformübergreifend 
bereitstellen können. Aber sie haben das selbst nach der Übernahme von 
Xamarin nicht getan. Die wollen anscheinend gar nicht, daß das jemand 
benutzt.

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Nano schrieb:
> Tim T. schrieb:
>> Abgesehen davon das die Liste falsch herum sortiert ist, muss er auch
>> nicht wissen wie eine (doppelt) verkettete Liste, oder sonstwas unter
>> der Haube aussieht, er ist als Wirtschaftsinformatiker in dieser
>> Hinsicht Anwender, kein Entwickler.
>
> Ja und dann kommt so ein scheiß unperformanter Code als Ergebnis raus.
> Gerade weil er nicht weiß, wie das unter der Haube funktioniert.
> Genau das ist die Folge davon.

Nö, er wird einfach ein List Objekt benutzen und das wurde bereits von 
entsprechenden Leuten hinreichend schnell genug implementiert.

> Wer guten Code schreiben muss, muss wissen, wie es unter der Haube
> funktioniert. Man sollte sogar die Hardware kennen, damit man nicht auf
> die Schnappsidee kommt und glaubt, dass das Einfügen eines Wertes in
> eine verkettete Liste grundsätzlich schneller sei, als in ein nicht
> all zu großes Array.

Guter Code bedeutet aber nicht zwangsweise performant.

>> C ist halt prozedurale Programmierung und damit für einen
>> Wirtschaftsinformatiker deutlich weniger Wert als irgendwas
>> Objektorientiertes.
>
> Der Wert erschließt sich dadurch, in dem man weiß, was in einer
> konkreten Situation vom High Level her performant ist, weil man es vom
> Low Level her einschätzen kann.

Da du bereits den Unterschied zwischen gutem Code und performantem Code 
nicht verstanden hast, ist die Diskussion darüber nicht wirklich 
zielführend. Zumal ein Wirtschaftsinformatiker selten hoch performanten 
Code braucht.

> Und zu dem Rest deines Beitrags was du alles so nutzt.
> Schön und gut, aber das trägt nichts zur Thematik bei.

Stimmt, danke. Es fehlt die Information das ich nach meinem Abschluss in 
Elektrotechnik mit Schwerpunkt Informationstechnologie(Informatik) 
selber einen Master als Wirtschaftsingenieur mit dem Schwerpunkt 
Informationstechnologie(Informatik) gemacht habe, also nicht so weit weg 
von einem Wirtschaftsinformatiker bin und daher sowohl die Anforderungen 
als auch das spätere Einsatzfeld ganz gut beurteilen kann.

: Bearbeitet durch User
von Nano (Gast)


Lesenswert?

Tim T. schrieb:
> Nano schrieb:
>> Tim T. schrieb:
>>> Abgesehen davon das die Liste falsch herum sortiert ist, muss er auch
>>> nicht wissen wie eine (doppelt) verkettete Liste, oder sonstwas unter
>>> der Haube aussieht, er ist als Wirtschaftsinformatiker in dieser
>>> Hinsicht Anwender, kein Entwickler.
>>
>> Ja und dann kommt so ein scheiß unperformanter Code als Ergebnis raus.
>> Gerade weil er nicht weiß, wie das unter der Haube funktioniert.
>> Genau das ist die Folge davon.
>
> Nö, er wird einfach ein List Objekt benutzen und das wurde bereits von
> entsprechenden Leuten hinreichend schnell genug implementiert.

Na Gratulation, da sieht man eben, dass du keine Ahnung hast und genau 
so einer bist, der keinen gescheiten, im Kontext der Thematik also im 
Sinne von performanten Code hinkriegt.

Ein List Objekt kann zwar verglichen mit eigenen implementierten 
verketteten Listen schnell sein, aber damit schlägst du kein Array das 
in den Cache passt. Denn letzteres wirst du über ein List Objekt nicht 
kriegen, weil diese entsprechenden Leute dieses List Objekt generisch 
erstellen müssen, dass sich für alles mögliche als verkettete Liste 
einsetzen lässt und die nicht im Vorfeld sehen können, wofür du es und 
auf welcher Hardware du es einsetzen möchtest.

Im Prinzip verhält es sich da wie mit der Wahl zwischen einem guten 
performanten Algorithmus und einem schlechten langsamen Algorithmus.
Es spielt nämlich im Mittel keine Rolle, wie gut dein langsamer 
Algorithmus   implementiert wurde, wenn der andere performante 
Algorithmus im Mittel meist besser ist.
Du hast dann schlichtweg den falschen Algorithmus verwendet und diese 
Dummheit kann dir auch kein guter Compiler und keine Leute abnehmen, die 
den Compiler bauen.

Und so ist es auch mit verketteten Listen vs. Arrays.


>> Wer guten Code schreiben muss, muss wissen, wie es unter der Haube
>> funktioniert. Man sollte sogar die Hardware kennen, damit man nicht auf
>> die Schnappsidee kommt und glaubt, dass das Einfügen eines Wertes in
>> eine verkettete Liste grundsätzlich schneller sei, als in ein nicht
>> all zu großes Array.
>
> Guter Code bedeutet aber nicht zwangsweise performant.

Der Kontext ist hier performanter Code und in dem Sinne ist das gut auch 
zu verstehen.

> Da du bereits den Unterschied zwischen gutem Code und performantem Code
> nicht verstanden hast,

Du hast Dünnschiss

> Zumal ein Wirtschaftsinformatiker selten hoch performanten
> Code braucht.

Das hat mit der Sache gar nichts zu tun.
Denn die Frage ist ja, ob er es kann, wenn er es braucht.
Und du kannst es, wie man oben sieht, nicht. Und der 
Wirtschaftsinformatiker wahrscheinlich auch nicht, wenn er sich nicht 
richtig informiert.

Und zum Rest. Nochmal, das ist irrelevant.

von Egon D. (Gast)


Lesenswert?

Nano schrieb:

> Na Gratulation, da sieht man eben, dass du keine
> Ahnung hast und genau so einer bist, der keinen
> gescheiten, im Kontext der Thematik also im Sinne
> von performanten Code hinkriegt.

Hmm.

Du bist der Meinung, es dient Deiner Position in der
Diskussion, wenn Du Leute vollpöbelst und persönlich
angreifst, die Dir nix getan haben? Ernsthaft?


> Ein List Objekt kann zwar verglichen mit eigenen
> implementierten verketteten Listen schnell sein,
> aber damit schlägst du kein Array das in den Cache
> passt.

Ahh ja... besonders wohl deshalb, weil das Einfügen
und Streichen von Elementen in Arrays so wahnsinnig
performant ist...


> Denn letzteres wirst du über ein List Objekt nicht
> kriegen, weil diese entsprechenden Leute dieses List
> Objekt generisch erstellen müssen, dass sich für
> alles mögliche als verkettete Liste einsetzen lässt
> [...]

Da schlagen die Scheuklappen des geborenen C-Fricklers
wieder zu.
Wer sagt, dass ein Listen-Objekt als verkettete Liste
implementiert sein muss?


> Im Prinzip verhält es sich da wie mit der Wahl zwischen
> einem guten performanten Algorithmus und einem schlechten
> langsamen Algorithmus.
> Es spielt nämlich im Mittel keine Rolle, wie gut dein
> langsamer Algorithmus implementiert wurde, wenn der andere
> performante Algorithmus im Mittel meist besser ist.
> Du hast dann schlichtweg den falschen Algorithmus verwendet
> und diese Dummheit kann dir auch kein guter Compiler und
> keine Leute abnehmen, die den Compiler bauen.

Korrekt.

Deswegen wird es einen Punkt geben, ab dem ein O(n^2)-Algorithmus,
der in hochoptimiertem C implementiert ist, von einem O(n*log(n))-
Algorithmus, der in lahmem Tcl programmiert wurde, geschlagen
wird.

Was wolltest Du doch gleich beweisen?


>> Guter Code bedeutet aber nicht zwangsweise performant.
>
> Der Kontext ist hier performanter Code [...]

Ahh ja.
Und das findest Du genau wo in der ursprünglichen Frage?


>> Zumal ein Wirtschaftsinformatiker selten hoch performanten
>> Code braucht.
>
> Das hat mit der Sache gar nichts zu tun.

Ahh ja.

Die Frage, was ein Wirtschaftsinformatiker typischerweise
so braucht, hat nix mit der Frage zu tun, welche Sprache
ein angehender Wirtschaftsinformatiker lernen sollte.

Klasse.
Keine weiteren Fragen.

von Nano (Gast)


Lesenswert?

Egon D. schrieb:
> Nano schrieb:
>
>> Na Gratulation, da sieht man eben, dass du keine
>> Ahnung hast und genau so einer bist, der keinen
>> gescheiten, im Kontext der Thematik also im Sinne
>> von performanten Code hinkriegt.
>
> Hmm.
>
> Du bist der Meinung, es dient Deiner Position in der
> Diskussion, wenn Du Leute vollpöbelst und persönlich
> angreifst, die Dir nix getan haben? Ernsthaft?

Doch, hat er. Lies mal richtig, er schrieb;
"> Da du bereits den Unterschied zwischen gutem Code und performantem 
Code
> nicht verstanden hast,"

das ist ne bodenlose Unterstellung und Frecheit.
Also kriegt er, was er wahrlich verdient zurück.


>> Ein List Objekt kann zwar verglichen mit eigenen
>> implementierten verketteten Listen schnell sein,
>> aber damit schlägst du kein Array das in den Cache
>> passt.
>
> Ahh ja... besonders wohl deshalb, weil das Einfügen
> und Streichen von Elementen in Arrays so wahnsinnig
> performant ist...

Tja und du bist leider auch so ein Kandidat der es nicht weiß. Oben habe 
ich es eigentlich schon erwähnt.

Stichwort: Cache

Eine Moderne CPU, die ein Array im Cache bearbeitet, hat die schneller 
sortiert, verändert und neue Elemente eingefügt, als das bei einer 
verketteten Liste der Fall ist. Letzteres läuft nämlich über den 
langsamen Hauptspeicher.

Aber ich sag ja, das sind so Sachen, die man halt nur weiß, wenn man 
weiß, wie die Dinger unter der Haube funktionieren und wie die Hardware 
funktioniert.


>> Denn letzteres wirst du über ein List Objekt nicht
>> kriegen, weil diese entsprechenden Leute dieses List
>> Objekt generisch erstellen müssen, dass sich für
>> alles mögliche als verkettete Liste einsetzen lässt
>> [...]
>
> Da schlagen die Scheuklappen des geborenen C-Fricklers
> wieder zu.
> Wer sagt, dass ein Listen-Objekt als verkettete Liste
> implementiert sein muss?

Von wo soll der C Compilerbauer denn wissen, wie viele Elemente du darin 
ablegen willst?
Natürlich muss er das generisch machen, also nimmt er eine verkettete 
Liste oder eine Datenform die er im Hauptspeicher ablegen kann.
Er wird also nicht das Array nehmen, denn um das nehmen zu können, muss 
man wissen, wieviel Cache die Hardware hat und wie viele Elemente da 
überhaupt bearbeitet werden sollen und das weiß nur der Programmierer 
der den Compiler lediglich nutzen soll.


> Deswegen wird es einen Punkt geben, ab dem ein O(n^2)-Algorithmus,
> der in hochoptimiertem C implementiert ist, von einem O(n*log(n))-
> Algorithmus, der in lahmem Tcl programmiert wurde, geschlagen
> wird.
>
> Was wolltest Du doch gleich beweisen?

Dass du es nicht verstanden hast.
Was aber natürlich daran liegt, da dir die Bedeutung des Cache und 
dieses Geheimnis darum im Zusammenhang von z.b. verketteten Listen nicht 
bekannt ist.
Und das liegt eben wieder genau daran, dass du dich nie damit 
beschäftigt hast, wie das unter der Haube funktioniert und was die HW 
leisten kann.


>
>>> Guter Code bedeutet aber nicht zwangsweise performant.
>>
>> Der Kontext ist hier performanter Code [...]
>
> Ahh ja.
> Und das findest Du genau wo in der ursprünglichen Frage?

Siehe oben mein erstes Posting, da habe ich den Rahmen des Kontextes 
gezogen.

von Egon D. (Gast)


Lesenswert?

Nano schrieb:

>> Du bist der Meinung, es dient Deiner Position in der
>> Diskussion, wenn Du Leute vollpöbelst und persönlich
>> angreifst, die Dir nix getan haben? Ernsthaft?
>
> Doch, hat er.

Ich verstehe Deinen Standpunkt, bin aber andere Meinung.


> Lies mal richtig, er schrieb;
> "> Da du bereits den Unterschied zwischen gutem Code
>  > und performantem Code nicht verstanden hast,"
>
> das ist ne bodenlose Unterstellung und Frecheit.

Nö.
Das ist m.E. die Wahrheit. Du hast das tatsächlich nicht
verstanden.

Für Software gibt es DEUTLICH mehr Qualitätskriterien
als die reine Laufzeit. Gute Ingenieure wissen das --
Frickler nicht.


>>> Ein List Objekt kann zwar verglichen mit eigenen
>>> implementierten verketteten Listen schnell sein,
>>> aber damit schlägst du kein Array das in den Cache
>>> passt.
>>
>> Ahh ja... besonders wohl deshalb, weil das Einfügen
>> und Streichen von Elementen in Arrays so wahnsinnig
>> performant ist...
>
> Tja und du bist leider auch so ein Kandidat der es
> nicht weiß. Oben habe ich es eigentlich schon erwähnt.
>
> Stichwort: Cache

Schwachsinn.


> Eine Moderne CPU, die ein Array im Cache bearbeitet,

Welche moderne CPU bearbeitet ein Array von, sagen wir,
10 Millionen Elementen im Cache? Im First-Level-Cache
gar?

Richtig: Keine.

Wenn an Position 107 drei Byte eingefügt werden müssen,
hast Du die Brille auf, denn dann werden die restlichen
9.999xxx Millionen Elemente umgespeichert.


> hat die schneller sortiert, verändert und neue Elemente
> eingefügt, als das bei einer verketteten Liste der Fall
> ist. Letzteres läuft nämlich über den langsamen
> Hauptspeicher.

Ich wiederhole mich: Schwachsinn.

Was schneller ist, hängt von der Relation der Datenmenge
zur Zugriffszeit ab.

First-Level-Cache ist über zwei Fäuste 50 mal schneller
als Hauptspeicher. Wenn die Datenmenge aber nur 0.1%
beträgt, gewinnt trotzdem der Hauptspeicher.


> Aber ich sag ja, das sind so Sachen, die man halt nur
> weiß, wenn man weiß, wie die Dinger unter der Haube
> funktionieren und wie die Hardware funktioniert.

Hmm.
Lass' es mich so sagen: Ich hoffe, Du hast in 20 Jahren den
Anstand, Dich nur mit Schamesröte im Gesicht an diese Sprüche
zu erinnern, die Du in Deiner Jugend so unbedacht geklopft
hast.

von c-hater (Gast)


Lesenswert?

Udo S. schrieb:

> Und wird wo genau eingesetzt?

An vielen Stellen. Nimm' z.B. IRGENDEINE übliche Linux-Distri. Du 
wirst darin ein Mono-Paket finden. Und viele Pakete, die eben dies als 
Abhängigkeit haben.

Das war jetzt wirklich einfach...

> In Zeiten von Cloud Computing, Virtualisierung und Container setzt
> keiner mehr im professionellen bereich nur auf Windows. Und Oberflächen
> sind mehr und mehr Web-Oberflächen.

Das wollen all die Daten-Zuhälter, da geht ihnen einer ab. Aber ich will 
das nicht und die meisten Anwender wollen das ebenfalls nicht (sofern 
sie sich überhaupt Gedanken darüber machen, was leider nur bei einer 
Minderheit der Fall ist).

Der eigentliche Witz ist aber: Mono addressiert primär ebenfalls genau 
diesen Bereich, die Funktionalität für den Desktop ist eher nur 
ungeliebtes Nebenprodukt...

von Yalu X. (yalu) (Moderator)


Lesenswert?

c-hater schrieb:
> Udo S. schrieb:
>
>> Und wird wo genau eingesetzt?
>
> An vielen Stellen. Nimm' z.B. IRGENDEINE übliche Linux-Distri.

Ich installiere auf meinen Rechnern üblicherweise Arch Linux.

> Du wirst darin ein Mono-Paket finden.

Tatsächlich, hab's gefunden :)

> Und viele Pakete, die eben dies als Abhängigkeit haben.

Wenn 13 für dich viele sind, ok.

10 Von den 13 Paketen sind Entwicklungstools und Bibliotheks-Wrapper für
Mono/.Net, die niemand bräuchte, wenn es Mono/.Net nicht gäbe.

Es verbleiben also gerade einmal 3 (drei!) Anwendungsprogramme für Mono:

- Pinta (einfaches Malprogramm),

- OpenBVE (Spiel) und

- OpenRA (Spiel).

> Das war jetzt wirklich einfach...

Dto. :)


Mono hat das gleiche Problem wie Wine: Programme laufen darauf nur dann
halbwegs sauber, wenn sie entweder

- sehr primitiv sind (d.h. nur wenige gängige .Net/Windows-Features
  nutzen) oder

- sie bewusst portabel für Mono/Wine entwickelt wurden (wie bspw.
  LTspice für Wine).

Die meisten größeren .Net- und Windows-Native-Programme laufen unter
Mono bzw. Wine nicht, und MS wird nachvollziehbarweise auch keinen
Finger krumm machen, um an dieser Situation irgendetwas zu ändern.

von (prx) A. K. (prx)


Lesenswert?

c-hater schrieb:
> Das wollen all die Daten-Zuhälter, da geht ihnen einer ab. Aber ich will
> das nicht und die meisten Anwender wollen das ebenfalls nicht

Im Business-Umfeld geht der Trend zu Microsoft 365, also Office in der 
Cloud statt lokal im Unternehmen. Mal sehen, ob oder wer sich damit ein 
faules DSGVO-Ei ins eigene Nest legt, das Thema ist ja noch offen.

: Bearbeitet durch User
von Ich nicht (Gast)


Lesenswert?

Axel S. schrieb:
> Wenn Microsoft
> gewollt hätte, dann hätten sie .net ja plattformübergreifend
> bereitstellen können.

Du kennst aber dotnet core bzw. standard, oder?
https://dotnet.microsoft.com/download

von Ich nicht (Gast)


Lesenswert?

Entschuldigung, falls das jetzt Ironie war...

von Nano (Gast)


Lesenswert?

Egon D. schrieb:
>> Lies mal richtig, er schrieb;
>> "> Da du bereits den Unterschied zwischen gutem Code
>>  > und performantem Code nicht verstanden hast,"
>>
>> das ist ne bodenlose Unterstellung und Frecheit.
>
> Nö.
> Das ist m.E. die Wahrheit. Du hast das tatsächlich nicht
> verstanden.

Nein, er kann nicht von "nicht verstanden" sprechen, wenn das nicht der 
Kontext war. Also ist es sein Versagen und sein Fehler, Punkt.


>>>> Ein List Objekt kann zwar verglichen mit eigenen
>>>> implementierten verketteten Listen schnell sein,
>>>> aber damit schlägst du kein Array das in den Cache
>>>> passt.
>>>
>>> Ahh ja... besonders wohl deshalb, weil das Einfügen
>>> und Streichen von Elementen in Arrays so wahnsinnig
>>> performant ist...
>>
>> Tja und du bist leider auch so ein Kandidat der es
>> nicht weiß. Oben habe ich es eigentlich schon erwähnt.
>>
>> Stichwort: Cache
>
> Schwachsinn.

Ich sag ja, du hast keine Ahnung.
Hier, der Beweis, wenn du es mir nicht glaubst:

Ja, der Typ lehrt an einer Uni Informatik:
https://www.youtube.com/watch?v=DyG9S9nAlUM

Wer nicht alles angucken will, ab 21:00 kommt die Auflösung.

Also nix Schwachsinn, also frickel woanders mit deinem Unwissen.


>> Eine Moderne CPU, die ein Array im Cache bearbeitet,
>
> Welche moderne CPU bearbeitet ein Array von, sagen wir,
> 10 Millionen Elementen im Cache? Im First-Level-Cache
> gar?
>
> Richtig: Keine.

Dein Array muss natürlich reinpassen, denn ich sagte oben, kenne die 
Hartware. Wenn es performant sein soll, musst du die Hardware kennen.
Gibt die Hardware das nicht her, dann musst du eben Linked List nehmen 
und langsame Zugriffe auf den Hauptspeicher in Kauf nehmen, passt es 
aber, dann ist das Array wegen dem Cache zu bevorzugen und das optimiert 
dir eben kein generic List Object weg.

Und zu den Cache Größen, ein Intel Ice Lake hat 8 MB 3rd Level Cache, 
mein Skylake hat ebenfalls 8 MB, da passt sehr viel rein.


> Wenn an Position 107 drei Byte eingefügt werden müssen,
> hast Du die Brille auf, denn dann werden die restlichen
> 9.999xxx Millionen Elemente umgespeichert.

Bla bla bla, guck das Video an und Staune.


>
>> hat die schneller sortiert, verändert und neue Elemente
>> eingefügt, als das bei einer verketteten Liste der Fall
>> ist. Letzteres läuft nämlich über den langsamen
>> Hauptspeicher.
>
> Ich wiederhole mich: Schwachsinn.

Tja und das ist mal wieder so ein Punkt, wo es um das Thema Wissen wie 
es unter der Haube aussieht und Hardware kennen geht. Etwas was du 
zumindest definitiv nicht beherrschst.

Das meiste Zeug, was bei der OOP im Heap landet, landet im Hauptspeicher
und der ist eben vielfach langsamer als Cachezugriffe.

Aber guck dir das Video an und lass dich blöd dastehen.

von Egon D. (Gast)


Lesenswert?

Nano schrieb:

> Egon D. schrieb:
>
>> Nö.
>> Das ist m.E. die Wahrheit. Du hast das tatsächlich
>> nicht verstanden.
>
> Nein, er kann nicht von "nicht verstanden" sprechen,
> wenn das nicht der Kontext war.

Doch, das kann er -- denn gerade Dein insistieren, es
sei ja um etwas ganz anderes gegangen, beweist, dass
Du TATSÄCHLICH nicht verstanden hast, worum es Tim
ging.


> Also ist es sein Versagen und sein Fehler, Punkt.

Das ist kein zielführender Ansatz für eine produktive
Diskussion. Du hast nicht die alleinige Definitionshoheit,
was zum Thema gehört und was nicht.


>>> Tja und du bist leider auch so ein Kandidat der
>>> es nicht weiß. Oben habe ich es eigentlich schon
>>> erwähnt.
>>>
>>> Stichwort: Cache
>>
>> Schwachsinn.
>
> Ich sag ja, du hast keine Ahnung.

Ironischerweise stimmt das sogar: Ich habe keine
Ahnung, wie man sich so in das Thema "Cache"
verbeissen kann, wenn der Ausgangspunkt die Frage
war: "Ist performanter Code identisch mit gutem
Code?"

Meine persönliche Antwort auf diese Frage ist ganz
klar: "Nein!"

Und zu dem Urteil komme ich nicht deshalb, weil
ich von Assembler keine Ahnung hätte -- sondern
im Gegenteil weil ich mit Assembler und Pascal
angefangen habe (erst auf Z80, dann auf x86) und
inzwischen bei der Scriptsprache Tcl gelandet bin.

Die Programme, die ich heute schreibe, laufen zwar
langsamer, sind aber um POTENZEN nützlicher als das,
was ich vor 20 Jahren so fabriziert habe.


> Hier, der Beweis, wenn du es mir nicht glaubst:

Ich brauche keinen Beweis , wenn schon keine
verständliche Behauptung formuliert wurde -- außer
natürlich den verächtlichen Beschimpfungen, ich hätte
keine Ahnung.


>>> Eine Moderne CPU, die ein Array im Cache bearbeitet,
>>
>> Welche moderne CPU bearbeitet ein Array von, sagen wir,
>> 10 Millionen Elementen im Cache? Im First-Level-Cache
>> gar?
>>
>> Richtig: Keine.
>
> Dein Array muss natürlich reinpassen,

Echt jetzt?!

Ganz ehrlich: Kommst Du Dir nicht selbst bescheuert vor
mit solchen hirnrissigen Vergleichen?

Wenn die Datenstruktur so winzig ist, dass sie komplett
in den (First-Level-)Cache passt, dann ist völlig wumpe,
ob das eine verkettete Liste oder ein Array ist -- es
geht so oder so rasend schnell, eben weil es sich nur um
eine winzige Datenmenge handelt.


> denn ich sagte oben, kenne die Hartware. Wenn es
> performant sein soll, musst du die Hardware kennen.

Ist ja auch überhaupt kein Problem, mein Linuxprogramm
mundgeklöppelt auf ca. 10 Plattformen und hunderte von
Prozessorvarianten zu optimieren. Meine Fresse...


> Gibt die Hardware das nicht her, dann musst du eben
> Linked List nehmen und langsame Zugriffe auf den
> Hauptspeicher in Kauf nehmen, passt es aber, dann ist
> das Array wegen dem Cache zu bevorzugen

Kompletter Unsinn.

1)
Eine "Liste" als Datentyp bzw. Klasse muss keineswegs
als klassische "verkettete Liste" implementiert sein.
In Tcl sind Listen einfach spezielle Strings.

2)
Nicht nur Arrays profitieren vom Cache -- auf Listen
trifft das (je nach Zugriffsmuster) genauso zu.

3)
Ob ich ein Array oder eine Liste verwende, hängt nicht
primär von der Hardware ab, sondern davon, was der
Algorithmus braucht.
Das kann auch nicht anders sein, denn der Entwickler
eines Anwendungsprogrammes weiss selten, auf welcher
genauen Hardware das Programm laufen wird.
Es ist deswegen ganz ausdrücklich eine BESCHEUERTE
Idee, Anwendungsprogramme ohne Not auf eine bestimmte
Hardware zu optimieren. Viel zielführender ist es, nach
besseren Algorithmen zu suchen, denn davon profitieren
in der Regel alle (wenn auch nicht immer in gleichem
Maße).

4)
Bei -- relativ zum verfügbaren Hauptspeicher -- kleinen
Datenmengen ist die Geschwindigkeitsdiskussion sowieso
irrelevant. Spannend wird es bei Datenmengen, die um ein
Vielfaches größer als der Cache sind. Hier werden dann
die Zugriffsmuster und die Lokalität der Zugriffe wichtig,
und man kann auch mit scheinbar einfachen Arrays sehr viel
Spaß erleben, wie ich jüngst erfahren durfte...
Da ich aber davon sowieso "nicht die geringste Ahnung"
habe, verschone ich Dich mit weiterem "Unsinn" zu dem
Thema...


> und das optimiert dir eben kein generic List Object weg.

Der für Dich offenbar unbegreifliche Punkt ist: Diese
Aussage mag gar nicht falsch sein -- sie ist aber in
vielen Fällen absolut IRRELEVANT.

Ein langsames, KORREKTES Programm ist in fast allen Fällen
deutlich nützlicher als ein pfeilschnelles FALSCHES. Diese
simple Tatsache begründet den Erfolg der Scriptsprachen.


> Und zu den Cache Größen, ein Intel Ice Lake hat 8 MB 3rd
> Level Cache, mein Skylake hat ebenfalls 8 MB, da passt
> sehr viel rein.

Und?

1)
Die Bilddateien, mit denen ich herumhantiere, haben als
Rohdaten 40MByte und temporär (bis zu) 640MByte.

2)
Zugriff auf First-Level-Cache kostet beim Skylake ca. 5
Takte; Third-Level-Cache kostet ca. 40 Takte; RAM kostet
(grob gerundet) 250 Takte.

3)
RAM wird nicht byteweise gelesen wird, sondern in ganzen
Cachelines. Die 250 Straftakte fallen somit nur EINMAL
je 64Byte-Block an. Gemittelt sind das je Byte 4 Takte,
also genau soviele, wie ein Zugriff auf den First-Level-
Cache kostet...
Der Trick ist daher, auch die Daten zu verwenden, die
ohnehin schon aus dem RAM gelesen wurden. Da sind wir
beim Thema "Zugriffsmuster" bzw. "Lokalität".


> Das meiste Zeug, was bei der OOP im Heap landet, landet
> im Hauptspeicher und der ist eben vielfach langsamer als
> Cachezugriffe.

???

Im Prinzip landet ALLES erstmal im Hauptspeicher. In den
Cache kommt es erst, wenn es gebraucht wird. Das trifft
aber auf Listen genauso wie auf Arrays zu...

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Ich verstehe das absurde Gehate nicht.

Bei primär dialog-orientierter Software verbringt das OS auf heutiger 
Hardware sowieso 99,9% in Warteschleifen oder Null-Events.

Wenn es nicht gerade um die Simulation von gigantschen Modellen 
(Meteorologie?) oder 3D-Rendering von Spielfilmen geht, ist Performance 
so ziemlich das Letzte, was bei der Auswahl einer ersterlernten 
Programmiersprache relevant wäre, weil sowieso im Überfluss vorhanden.

Für mich ist die Erzeugung plattform-neutraler Anwendungen nach dem 
Coding und der Verzicht auf die Installation irgendwelcher 
Laufzeitbibliotheken und -Umgebungen zusätzlich zum "normalen" OS 
dagegen deutlich wichtiger, weil praxisrelevant. Und da wird es schon 
wieder relativ "dünn" ...

von Peter M. (r2d3)


Lesenswert?

Hallo Egon D.,

Egon D. schrieb:
> Ironischerweise stimmt das sogar: Ich habe keine
> Ahnung, wie man sich so in das Thema "Cache"
> verbeissen kann, wenn der Ausgangspunkt die Frage
> war: "Ist performanter Code identisch mit gutem
> Code?"

ich teile Deinen Standpunkt. Ich behaupte:
Die Unkenntnis der O()-Notation führt dazu, daß Leute (auch mit diesem 
Video) in die Irre geführt werden.

Wenn da jemand im Internet etwas über Hardware-Tuningtips verbreitet, 
dann geht es immer nur um einen Faktor c. Diese Art von Beschleunigung 
liegt aber immer noch in derselben Klasse.

Forist "Schlaumeier" hat mal beschrieben, wie toll er mit seinem 
O(n^2)-Algorithmus sortieren kann. Im gleichen Atemzug musste er aber 
eingestehen, dass er für größere Probleme eine Datenbank benutzt. Deren 
Indexierungsroutinen laufen allerdings nicht in O(n^2), sondern in 
O(n*log(n)). Und gerade deswegen verzichtet der "Schlaumeier" bei großen 
Problem auf den eigenen, schlechten Code, der in O(n^2) liegt. :)

Welchen Aussagehalt hat der Vergleich von Arrays - bei denen man auf ein 
Element in O(1)* zugreifen - kann mit Listen (ob nun einfach, zweifach 
oder dreifach verkettet) wo man Kosten von O(n) hat?

* vorausgesetzt, dass Array liegt kontinuierlich an einem Stück im 
Speicher

: Bearbeitet durch User
von Hugo H. (hugo_hu)


Lesenswert?

Rolf R. schrieb:
> Ein Abiturient, der gerade sein Abi gemacht hat, will im Oktober mit dem
> Studium Wirtschaftsinformatik beginnen.

Wieso erkundigt sich "der Abiturient" nicht bei der in Frage kommenden 
Universität / FH? Ist er zu unselbständig dazu? Dann wäre ggf. eine 
Lehre als Fachinformatiker zielführender.

Wenn das kein Trolling ist wirst Du eher SAP (ABAP), Salesforce oder 
Oracle EBS etc. begegnen. Wichtiger sind die Grundlagen des Software 
Engineering. Vorbereitend würde ich Volkswirtschaftslehre und 
Finanzmathematik empfehlen - damit wird im Grundstudium "gesiebt".

: Bearbeitet durch User
von Hugo H. (hugo_hu)


Lesenswert?

Christian H. schrieb:
> Wer als Wirtschaftsinformatiker überhaupt programmieren kann, gehört
> schon zur Oberschicht.

Habe mal ein wenig "zurück gelesen". Du bist der Beste :-)

Beitrag #6709853 wurde von einem Moderator gelöscht.
von Nano (Gast)


Lesenswert?

Egon D. schrieb:
> Ironischerweise stimmt das sogar: Ich habe keine
> Ahnung, wie man sich so in das Thema "Cache"
> verbeissen kann, wenn der Ausgangspunkt die Frage
> war: "Ist performanter Code identisch mit gutem
> Code?"

Das war aber nicht der Ausgangspunkt der Frage, sondern was ist 
performanter. Arrays oder verlinkte Listen.

Da du auch nicht einmal bereit bist, dir das Video anzugucken, werde ich 
die Diskussion mit dir hier auch beenden. Nützt ja nichts, schließlich 
trifft das auf Taube Ohren und ich hab besseres zu tun.

Ich habe dem TS geholfen in dem ich ihn ihm einen guten Rat gab und mehr 
hatte ich auch nicht vor. Ich werde daher an dir auch keine Zeit mehr 
verschwenden, da es so etwas unbelehrbarem wie dir verlorene Zeit ist.

EOD

von Nano (Gast)


Lesenswert?

Frank E. schrieb:
> Ich verstehe das absurde Gehate nicht.
> ...
>
> Wenn es nicht gerade um die Simulation von gigantschen Modellen
> (Meteorologie?) oder 3D-Rendering von Spielfilmen geht, ist Performance
> so ziemlich das Letzte, was bei der Auswahl einer ersterlernten
> Programmiersprache relevant wäre, weil sowieso im Überfluss vorhanden.

Ich hoffe du verwendet keinen Ad- und Javasript Blocker. Deiner Aussage 
nach ist das ja nicht schlimm, was da Leistung verbrät und die 
Wirtschaftsinformatiker so fabrizieren, man hat ja genug.

So und damit ist eigentlich alles gesagt.

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Peter M. schrieb:
> Welchen Aussagehalt hat der Vergleich von Arrays - bei denen man auf ein
> Element in O(1)* zugreifen - kann mit Listen (ob nun einfach, zweifach
> oder dreifach verkettet) wo man Kosten von O(n) hat?

Seufz
Es geht zwar immer weiter von der Ursprungsfrage weg, aber was solls. 
Versuche doch einfach mal eine reale Problemstellung zu lösen, kein 
Luftschoss, sonst endest du irgendwann wie Nano. Zum Einen hast du beim 
Array das Problem dass du bei einfüge oder entfern Operationen alle 
weiteren Elemente im Array bewegen musst, bei einer Liste nur ein paar 
Pointer umbiegen. Zum Anderen willst du gewöhnlich nicht auf das Element 
mit Index x zugreifen sondern auf ein Element mit einer bestimmten 
Eigenschaft welches du in beiden Fällen suchen musst und das läuft in 
der Regel mit O(n).

von Hugo H. (hugo_hu)


Lesenswert?

Nano schrieb:
> Das war aber nicht der Ausgangspunkt der Frage, sondern was ist
> performanter. Arrays oder verlinkte Listen.

Hast Du eine Leseschwäche?

Schau Dir mal den Titel des Threads an.

von Peter M. (r2d3)


Lesenswert?

Hallo Tim T.,

> Versuche doch einfach mal eine reale Problemstellung zu lösen, kein

bitte lese einfach noch einmal meinen Beitrag. Ich habe mich lediglich 
zu dem Videoinhalt geäußert.
Geh' einfach mal davon aus, dass ich effiziente Datenstrukturen kenne.
Dazu gehören auch die Kosten der Manipulation derselben. :)

: Bearbeitet durch User
von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Peter M. schrieb:
> Hallo Tim T.,
>
>> Versuche doch einfach mal eine reale Problemstellung zu lösen, kein
>
> bitte lese einfach noch einmal meinen Beitrag. Ich habe mich lediglich
> zu dem Videoinhalt geäußert.
> Geh' einfach mal davon aus, dass ich effiziente Datenstrukturen kenne.
> Dazu gehören auch die Kosten der Manipulation derselben. :)

Ah ok, das Video hatte ich mir erspart und hielt darum deinen Beitrag 
für einen weiteren Versuch die über alles erhabene Überlegenheit von 
Arrays zu propagieren. Wobei ich sagen muss das ich ohne den expliziten 
Hinweis auf das Video auch bei mehrmaligem Lesen zu dieser 
Fehlinterpretation komme^^

von Peter M. (r2d3)


Lesenswert?

Hallo Tim,

Tim T. schrieb:
> Ah ok, das Video hatte ich mir erspart und hielt darum deinen Beitrag

Das Video hat auch keinen Erkenntniswert.

> für einen weiteren Versuch die über alles erhabene Überlegenheit von
> Arrays zu propagieren. Wobei ich sagen muss das ich ohne den expliziten
> Hinweis auf das Video auch bei mehrmaligem Lesen zu dieser
> Fehlinterpretation komme^^

Nein. Wer die O-Notation kennt, lässt die Hardware Hardware sein und 
kümmert sich um den Algorithmus, weil die Hardwarebeschleunigung immer 
nur als konstanter Faktor in die Laufzeit eingeht.

Hier ist ein schönes Beispiel, wie eine rekursive Auflistung von 
Ordnerinhalten aufgrund der Verwendung von dynamischen Arrays die 
Laufzeit auf O(n^2) hochschraubt:

http://www.vb-fun.de/cgi-bin/loadframe.pl?ID=vb/tipps/tip0327.shtml

von Udo S. (urschmitt)


Lesenswert?

c-hater schrieb:
>> In Zeiten von Cloud Computing, Virtualisierung und Container setzt
>> keiner mehr im professionellen bereich nur auf Windows. Und Oberflächen
>> sind mehr und mehr Web-Oberflächen.
>
> Das wollen all die Daten-Zuhälter, da geht ihnen einer ab. Aber ich will
> das nicht und die meisten Anwender wollen das ebenfalls nicht (sofern
> sie sich überhaupt Gedanken darüber machen, was leider nur bei einer
> Minderheit der Fall ist).

Du sagst es dir ja selbst 90% der Anwender ist das Wuppe. Wenn dann sind 
es die Firmen, denen es NICHT Wuppe ist, spätestens wenn ihr Namen in 
den Nachrichten unten der Überschrift Datenleck zu finden ist (Von 
Fratzenbuch abgesehen, die scheinen ja ordentlich mit Teflonspray 
getränkt zu sein.)

Es geht nicht um Daten-Zuhälter. Im professionellen Umfeld ist der 
Zugriff von Cloudanbieter auf Daten der Kundenunternehmen ziemlich genau 
geregelt.
Es geht darum Dinge wie Service, Hardware, Sicherheit, Backup, 
skalierbare Kapazität, usw. auszulagern.

Du hast mal wieder nicht gelsen. Ich schrieb "kann man gut finden oder 
nicht".
Das ist nicht was ich jetzt geil finde, das ist was konkret passiert!

Zum Thema mono hat Yalu ja schon was geschrieben. ist auch egal, ich 
habe keine Lust mit einem Fanboy zu streiten. Es gibt auch Leute für die 
ist MS-Access der Gipfel der Kunst der Speicherung und Verarbeitung von 
Daten.

Jedem das Seine

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.