Programmieren lernen

Sorry wenn ich das so sage, aber ich hab lange nix so merkwürdiges mehr gelesen.
Wozu sollte man sich als Anfänger mit Client-Server-Programmierung, XML/HTML Markup-Sprachen, einer Programmiersprache auf dem Client (Javascript), einer auf dem Server (Python, Ruby, Java, PHP oder was auch immer) und dazu noch SQL herumschlagen? Man kann das natürlich machen, aber es ist unnötig komplex, es verleitet dazu falsche Annahmen zu erlernen, die dann später zu Sicherheitslücken führen.
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Vom Sicherheitsaspekt abgesehen würde ich da zustimmen - Webseitenentwicklung ist nicht wirklich der richtige Einstieg um die Grundkonzepte von Softwareeentwicklung zu erlernen.
Wenn schon, dann nur was clientseitiges wie ein kleines Game auf Basis von JS und HTML5 vieleicht.
 
Also mal ehrlich, es gibt doch nix zugänglicheres und leichteres als Webentwicklung. Und warum reden wir hier über Sicherheitslücken, hier will jemand Programmieren lernen, nicht die neue Deutsche Bank Webseite bauen!

Man muss halt wissen was man machen möchte. Lernen ist eh erstmal Sprachen-unabhängig. Die Frage ist ja nur wo man sein Wissen dann anwendet.
 
Nichts zugänglicheres und leichteres?
Naja, ganz ehrlich, für Webentwicklung braucht man in der Regel 4 oder gar 5 Sprachen auf einmal! Davon sind 2 markup-Sprachen, die einem in anderen IT Bereichen nicht viel bringen werden und eine ist eine Query language für die das Selbe gilt.
Wenn das einen als Anfänger nicht erschlägt, weiss ich auch nicht.
 
Man kann ja mit statischen Seiten anfangen. Dann noch ein Framework (Bootstrap oder ähnliches) dazu und schon kommt man erstmal mit HTML und CSS hin, bis man Erfolgserlebnisse hat. Klar wirds mit PHP oder JS dann komplexer, aber da kann man sich dann langsam rantasten.
 
Ihr habt aber gelesen was der Fragende vorhat? [emoji848]

....

Mögliche Ziele wären für mich:

- ein Programm schreiben zu können
- Eine Webseite zu erstellen
- Datenbanken und Analysen

...

Und wie viele Sprachen braucht man?
UIs in Java fallen vom Himmel?

Ja. HTML/CSS kann ziemlich nerven, aber mit Tools wie Bootstrap etc. musst du kein Frontend Entwickler sein um eine Webseite zu erstellen. Wie einfach soll es denn noch sein? Ich verstehe euch echt nicht.
Dazu Node im Backend und JS reicht als Programmiersprache.

Programmieren lernen tut man mit Webseiten natürlich nicht. Hab ich auch nie behauptet. Aber C++ lernen wenn mein Ziel eine Webseite mit Datenbank Anbindung ist halte ich für völlig absurd.
 
Programmieren lernen tut man mit Webseiten natürlich nicht.
Aber genau das ist das Hauptanliegen!

Wenn man dynamische Webseiten erstellen will, muss man programmieren können. Erst danach ergibt es Sinn sich mit der Gestaltung von dynamischen Webseiten auseinanderzusetzen, weil sonst die Lernkurve viel zu steil ist. Wenn man Python lernt, kann man anschließend Django nehmen. Bei Ruby kann man dann später Ruby on Rails nehmen. Bei Java könnte man theoretisch JSP oder Java EE nehmen, aber letzteres ist eher etwas für Business Applikationen im Multitier Umfeld.

Wer für Macs Software mit GUI schreiben will, kommt um Objective-C bzw. Swift nicht herum. Leider gibt es bisher keine brauchbare Einsteigerliteratur für Swift. Für Objective-C gibt es die Bücher von Aaron Hillegass, mit denen man den Einstieg in die GUI-Programmierung mit Cocoa lernen kann von Kochan gibt es ein Objective-C Lehrbuch. Objective-C als Sprache für dynamische Webseiten ist mausetot genauso wie Apples WebObjects.
 
Was ist denn mit SWIFT bzw. Objective C? Gute "must have" Sprache?
Must have garantiert nicht, da nur auf dem Mac relevant. Falls du aber sowieso nur dort was machen willst, ist Swift sicher nicht die schlechteste Idee. Jedenfalls baust du damit wesentlich schneller eine gut aussehende Mac GUI App als mit den systemunabhängigen Sprachen. Objective C ist ein etwas merkwürdiger Zwitter aus C und Smalltalk, was das Erlernen nicht einfacher macht. Außerdem wird es früher oder später durch Swift ersetzt werden. Apropos Smalltalk, das ist zum Programmieren lernen sehr gut geeignet, bzw. dessen moderner Ableger Squeak.
 
Naja, ganz ehrlich, für Webentwicklung braucht man in der Regel 4 oder gar 5 Sprachen auf einmal! Davon sind 2 markup-Sprachen, die einem in anderen IT Bereichen nicht viel bringen werden und eine ist eine Query language für die das Selbe gilt.
Und die Markup-Sprache des GUI-Frameworks deiner Wahl zu lernen, bringt wirklich mehr - oder wie genau erstellst du denn die? Und sich mal grundsätzlich mit XML-ähnlichen Markup-Sprachen zu befassen ist auch nicht so schlecht, die Anwendungsmöglichkeiten gehen auf jeden Fall weit über Webentwicklung hinaus. Selbiges gilt übrigens für Datenbanken – wie du, wenn du irgendwelche Software geschrieben hast, ohne eines vom beidem zu nutzen, ausgekommen bist, weiß ich ehrlich gesagt nicht...


Wenn man dynamische Webseiten erstellen will, muss man programmieren können. Erst danach ergibt es Sinn sich mit der Gestaltung von dynamischen Webseiten auseinanderzusetzen, weil sonst die Lernkurve viel zu steil ist.

Der Einstieg ist übrigens denkbar einfach: <F12> (in Firefox oder Chrome), <alert("Hello World");>, <enter>. Jetzt erzähl mir mal, wo das ähnlich schnell geht. Mit der Methode kann man dann so ungefähr alles lernen, was in den typischen Anfängertutorials durchgegangen wird. Wo man dann in anderen Sprachen gerade mal beginnt, sich in die großartigen GUI-APIs einzulesen, ist man dann schon mit seiner ersten GUI fertig. Dann schaut man sich mal ein mobiles JS-Framework an und lädt bald die erste App auf das Mobiltelefon seiner Wahl.

Ist natürlich bei weitem nicht perfekt (Dokumentation ist großteils auf Englisch und Browserverwendung ausgelegt?), Tools/IDEs sind in kostenlos nicht so komfortabel (oder was verwendet scrollt?) und bei architektonischen Fragestellungen (Modularisierung, etc.) merkt man, dass JS eben aus dem Browser kommt – aber so sinnvoll wie C oder Java ist es auch...

Warum ist eigentlich noch niemand mit C# (sinnvoller als Swift in jedem Fall) um die Ecke gekommen? Hinreichend portabel, sehr günstige Tools für Privatanwender, verbreitete Frameworks für klassische GUI, Web, Spiele und Mobil, nicht sehr exotisch?
 
Zuletzt bearbeitet:
Stimmt, C# ist auch echt nice. Ich weiß nur nicht, wie es da mit Entwicklungsumgebungen für den Mac des TE steht.
 
Aber genau das ist das Hauptanliegen!

Wenn man dynamische Webseiten erstellen will, muss man programmieren können. Erst danach ergibt es Sinn sich mit der Gestaltung von dynamischen Webseiten auseinanderzusetzen, weil sonst die Lernkurve viel zu steil ist. Wenn man Python lernt, kann man anschließend Django nehmen. Bei Ruby kann man dann später Ruby on Rails nehmen. Bei Java könnte man theoretisch JSP oder Java EE nehmen, aber letzteres ist eher etwas für Business Applikationen im Multitier Umfeld.

Wer für Macs Software mit GUI schreiben will, kommt um Objective-C bzw. Swift nicht herum. Leider gibt es bisher keine brauchbare Einsteigerliteratur für Swift. Für Objective-C gibt es die Bücher von Aaron Hillegass, mit denen man den Einstieg in die GUI-Programmierung mit Cocoa lernen kann von Kochan gibt es ein Objective-C Lehrbuch. Objective-C als Sprache für dynamische Webseiten ist mausetot genauso wie Apples WebObjects.

hast du den ersten Post überhaupt gelesen, hab ich über dir auch extra noch mal zitiert.

Eine Webseite zu erstellen

Programmieren lernen ist Sprach-unabhängig, sag ich die ganze Zeit. Nimm was dir Spass macht. Willst du Webseiten bauen brauchst du Javascript. Und wenn du DANN keine Lust hast noch eine extra Sprache für das Backend zu lernen, nimmste halt Node.
Natürlich ist es schwer ein guter Web-Developer zu werden, egal ob Backend oder Frontend. Aber ich weiss nicht was das mit dem ganzen Thema hier zu tun hat. Wäre es einfach, müsste man es ja nicht lernen.
 
Der Einstieg ist übrigens denkbar einfach: <F12> (in Firefox oder Chrome), <alert("Hello World");>, <enter>. Jetzt erzähl mir mal, wo das ähnlich schnell geht. Mit der Methode kann man dann so ungefähr alles lernen, was in den typischen Anfängertutorials durchgegangen wird. Wo man dann in anderen Sprachen gerade mal beginnt, sich in die großartigen GUI-APIs einzulesen, ist man dann schon mit seiner ersten GUI fertig. Dann schaut man sich mal ein mobiles JS-Framework an und lädt bald die erste App auf das Mobiltelefon seiner Wahl.
Das übliche nichtssagende "Hello World!" Beispiel. Schreibst Du GUIs von Hand? Ich vermeide das, solange dies programmatisch nicht notwendig ist, denn dafür gibt es GUI-Builder. Apple liefert einen ganz guten mit Xcode mit, allerdings muss man dann Cocoa nutzen. Netbeans hat einen ordentlichen GUI-Builder dabei. Gtk+ oder Qt haben ihre eigenen GUI-Builder, wenn man die beiden Standard Frameworks unter *I*X anführen will. Gtk+ und Qt-GUIs laufen auch unter macOS, allerdings sind sie nicht zu 100% mit dem Mac passend. Python kann man ebenfalls nutzen, um Cocoa zu programmieren. Es gibt da eine spezielle Erweiterung.

Warum ist eigentlich noch niemand mit C# (sinnvoller als Swift in jedem Fall) um die Ecke gekommen?
Weil es auf *I*X keinerlei Sinn macht! C# ist eine reine Microsoft Geschichte, und wenn man sich auf diese Sprache festlegt muss man mit den Unzulänglichkeiten mit Mono anfreunden, wenn man es auf etwas anderes als Windows ausführen will. Für einen Mac-Nutzer ist das Swift deutlich sinnvoller, das es übrigens als Runtime ohne GUI auch für Linux gibt. D.h. Swift Server Applikationen laufen unter Linux problemlos.
 
Stimmt, C# ist auch echt nice. Ich weiß nur nicht, wie es da mit Entwicklungsumgebungen für den Mac des TE steht.

Visual Studio für Mac | Visual Studio

VS4Mac ist eine umgelablete Weiterentwicklung von Xamarin Studio. Soll in Zukunft einen ähnlichen Funktionsumfang bieten wie VS4Windows. Ursprünglich wars halt hauptsächlich ausgerichtet auf die Entwicklung von Mobile Apps mit Xamarin unter C#.

Als Alternative vielleicht Visual Studio Code - Code Editing. Redefined
 
Das übliche nichtssagende "Hello World!" Beispiel.
Ich weiß ja nicht, mit welchen Fortschritten du bei privaten Weiterbildungen rechnest... Die bekannte Java-Insel wird offensichtlich an meiner Uni für die Informatik-Einführung verwendet. Da macht man ungefähr das ganze Buch lang nichtssagende Beispiele... (und manche Leute können es im 5ten Semester immer noch nicht...)

Schreibst Du GUIs von Hand? Ich vermeide das, solange dies programmatisch nicht notwendig ist, denn dafür gibt es GUI-Builder. Apple liefert einen ganz guten mit Xcode mit, allerdings muss man dann Cocoa nutzen. Netbeans hat einen ordentlichen GUI-Builder dabei. Gtk+ oder Qt haben ihre eigenen GUI-Builder, wenn man die beiden Standard Frameworks unter *I*X anführen will.
Und der GUI-Builder erfordert keine Einarbeitung? (und bei Problemen darf man dann eben in das generierte schauen, manchmal ist das auch XML)

Python kann man ebenfalls nutzen, um Cocoa zu programmieren. Es gibt da eine spezielle Erweiterung.
Hört sich nach einem guten Einsteigerplan an, erstmal die "spezielle Erweiterung" zu finden, zu installieren und zu verwenden.

Weil es auf *I*X keinerlei Sinn macht! C# ist eine reine Microsoft Geschichte, und wenn man sich auf diese Sprache festlegt muss man mit den Unzulänglichkeiten mit Mono anfreunden, wenn man es auf etwas anderes als Windows ausführen will. Für einen Mac-Nutzer ist das Swift deutlich sinnvoller, das es übrigens als Runtime ohne GUI auch für Linux gibt. D.h. Swift Server Applikationen laufen unter Linux problemlos.
Inwieweit ist Mono denn unzulänglich für Applikationen, die man am Anfang so programmiert - gibt auf jeden Fall jede Menge GTK#-Apps, die man als Hobbyist nicht innerhalb eines Jahres von 0 nachbauen wird? Die Bereiche Web, Spiele und App kann man in jedem Fall ganz offensichtlich auch mit kommerziellem "Support" sehr gut damit lösen. Was kann das headless-runtime für Swift denn, was Mono nicht kann? GUI geht ja schon mal plattformübergreifend mit GTK# oder Winforms (hässlich, wie die Nacht und eingeschränkt, aber es geht - TKinter ist auch nicht viel besser...).
 
Also, wie man meiner Meinung nach ein erfolgreicher Programmierer wird:

1. Man besorgt sich ein hilfreiches Betriebssystem.
Dazu müssen wir erst klären, was ein hilfreiches Betriebssystem ist. Hilfreich wäre es natürlich, wenn man genau zurückverfolgen könnte, wie das Programm läuft, weil sonst das Debugging schwer wird, wenn nicht das eigene Programm Schuld am Crash ist. Außerdem kann man im Quelltext des Betriebssystems herauslesen, wie Dinge implementiert sind, und die müssen relativ gut implementiert sein, da es ja eben im Betriebssystemcode ist, der gewöhnlicherweise von vielen Leuten überarbeitet wird - jedenfalls deutlich mehr, als der eines relativ unbedeutenden Nischentools.
Zweitens ist es nützlich, wenn standardmäßig ein guter Quellcode-Editor dabei ist, der Syntax-Highlighting für viele Sprachen unterstützt und übliche programmier-relevante Dinge anzeigen kann, wie eine Vertikale Linie und die Zeilennummer.
Welche Betriebssysteme kommen also in Betracht: Eine Linux-, Hurd- oder BSD-Distribution und so weiter, wie Ubuntu. Was ist eher Suboptimal: Closed Source, wie OS X oder Windows, weil diese die genannten Vorteile nicht bietet.

2. Man entscheidet sich für eine Programmiersprache.
Dabei stellen sich zwei Fragen: Zum einen, welche Programmiersprache praxistauglich ist, und zum zweiten, welche sich besonders leicht erlernen lässt. Dabei ist klar, dass sich das teilweise widerspricht.
Man kann jetzt viel Zeug aufzählen, aber so viel Zeit habe ich nicht. Besonders relevant sind: Bash, C/C++, Rust, Java, Python, Ruby, Go.
Ich teile es mal grob ein:
1. Bash: Lahm und hässlich. Aber die Programmierung geht schnell von der Hand, weil man ja viele komplexe Optionen hat.
2. Java: Nicht gerade schnell, dafür Portabel und einfach.
3. Python/Ruby: Lahm
4. Go: Von Google und nicht das schnellste...
5. C#: Dazu brauche ich glaube ich wenig sagen - ist das Standardteil für Microsoft-Zeug.
6. C/C++: Hat einige unschöne Dinge für Anfänger, aber das schnellste nach Assembler, was es so gibt.
7. Rust: Quasi der Nachfolger von C, mit Vereinfachung für Multithreading-Implementierungen. Sehr leistungsfähig, aber nicht unbedingt einfach zu erlernen.

Somit bleiben eigentlich nur 2 sinnvolle Optionen übrig, die relativ einfach zu erlernen und dabei auch nützlich sind: C/C++ und Java. Und wenn man schon Linux als Betriebssystem hat, würde ich C++ nehmen, auch wenn Java einen Tick einfacher wäre.

3. Man lädt sich einen Compiler herunter.
Bei Ubuntu per Befehl sudo apt install gcc.

4. Man legt eine C++-Datei an.
Einfach eine leere Datei mit der Endung .cpp, die man dann mit Gedit öffnet.

5. Man kopiert sich einen Hallo, Welt-Quelltext in die Datei und kompiliert sie.
Kompilieren geht mit dem Befehl: g++ *.cpp-Dateiname* - beispielsweise g++ Hallo_Welt.cpp

6. Man führt sein erstes Programm auf der Konsole aus und freut sich, dass "Hallo, Welt!" ausgegeben wird.
Mit ./a.out.

7. Man macht ein Tutorial
Learn C++ - Free Interactive C++ Tutorial

8. Man hilft in einem Projekt mit.
Dazu klont man mit git ein interessantes C++- OpenSource-Projekt, schaut, welche Bugreports offen sind und hilft da ein wenig mit. Vielleicht hat man ja zufälligerweise selbst ein Problem mit einem Programm und kann sich so behelfen.

9. Man fügt einem Projekt neue Funktionen hinzu
10. Man erstellt sein eigenes Projekt
11. Man lernt andere - vorzugsweise modernere - Programmiersprachen, wie beispielsweise Rust

Natürlich kann man auch eine Visual Studio-Lizenz kaufen, sich nicht dafür interessieren, wie intern irgendwas läuft, und sich freuen, wenn man sein erstes C#- Programm erstellt hat, das beim Öffnen den PC herunterfährt und man damit seine Freunde ärgern kann. Für mich ist das nur ein Qualitätsunterschied.
 
Zuletzt bearbeitet:
C# ist eine von mehreren Programmierspra chen um Mono und .NET zu programmieren. Und .NET ist mittlerweile auch Open Source.

Wenn alles aus dem Hause Microsoft aber automatisch iiih und bäääh ist, dann spielt das natürlich keine Rolle.
So gerne ich embedded auf Linux programmiert hab - Hast du keine IDE oder Buildsystem was dich unterstützt kann das ganze sehr viel komplexer werden. Aber okay, es gibt ja Zeitgenossen die schreiben ihre makefiles noch von Hand. Oder wie in deinem Beispiel garnicht.

Ich will nix gegen den TE sagen, aus meinem Studium-beruflichen (dann praktikanten) Umfeld kenne ich das so dass die meisten die mit ihrem Mac dran saßen, den deswegen hatten weil sie schlicht keine Ahnung haben wollten was wie funktioniert, und dann außerhalb ihrer jeweiligen IDE Probleme hatten.

Gesendet von unterwegs.
 
.NET ist mittlerweile auch Open Source.
Das aber eher deshalb, weil Microsoft strategisch dazu gezwungen ist... - trotzdem ein gutes Argument.

Wenn alles aus dem Hause Microsoft aber automatisch iiih und bäääh ist, dann spielt das natürlich keine Rolle.
Das natürlich auch - man macht Erfahrungen am einen Fuß und überträgt sie auf die Zehen am anderen, bevor man nochmal ins Fettnäpfchen tritt. :d

So gerne ich embedded auf Linux programmiert hab - Hast du keine IDE oder Buildsystem was dich unterstützt kann das ganze sehr viel komplexer werden.
Wobei man das jetzt nur in meinem Beispiel nicht hat, weil es nicht komplex genug ist, HelloWorld zu schreiben :) Findest Du meine in 10 Sekunden, fast nur aus Boardmitteln zusammengeschraubte "IDE" etwa nicht schön?;)
Bildschirmfoto vom 2017-10-20 19-48-14.jpg

Ich will das jetzt keinem Anfänger empfehlen, aber nur das Terminal zu benutzen, hat sehr viele Vorteile. Beispielsweise kann ich komplett ohne X-Server arbeiten und meine IDE kann so gut wie nicht abstürzen. Theoretisch könnten Bestandteile abstürzen, aber auch das ist extrem unwahrscheinlich.

Ich will nix gegen den TE sagen, aus meinem Studium-beruflichen (dann praktikanten) Umfeld kenne ich das so dass die meisten die mit ihrem Mac dran saßen, den deswegen hatten weil sie schlicht keine Ahnung haben wollten was wie funktioniert, und dann außerhalb ihrer jeweiligen IDE Probleme hatten.
Genau, aber ich denke, dass das nicht sein muss, wenn man von Anfang an bei den kleinen Dingen ausgiebig anfängt und nicht schnellstmöglich irgendwas mit einer GUI hinklatschen möchte.
 
Ich weiß ja nicht, mit welchen Fortschritten du bei privaten Weiterbildungen rechnest...
Das "Hello World!" Beispiel taugt überhaupt nichts zu dokumentieren wie leicht oder schwer man mit einem bestimmten GUI-Framework ein GUI entwerfen und umsetzen kann. Insofern ist der Einzeiler ohne jeden Bezug zum eigentlichen Problem. Was also bringt so ein simpel Beispiel an Nutzen?

Und der GUI-Builder erfordert keine Einarbeitung? (und bei Problemen darf man dann eben in das generierte schauen, manchmal ist das auch XML)
Das kommt auf den GUI-Builder an, der von Apple ist sehr durchdacht und sehr einfach zu nutzen. Man lernt die Bedienung en passant, wenn man das Buch von Hillegass durcharbeitet (das Standardwerk für Cocoa Anfänger auf dem Mac). Ich kenne nur noch einen der noch besser ist, aber das ist ein kommerzielles Produkt für Motif, und Motif ist nicht mehr aktuell. Das ist nur noch von historischem Interesse. Glade (Gtk+/Gnome GUI Desginer) hinkt leider der Entwicklung von Gtk+ hinterher, und die Entwickler von Gnome verbrechen in der letzten Zeit so einiges an Unfug. Die Doku ist dadurch auch nicht auf der Höhe der Zeit. Tutorials für das GUI-Schreiben von Hand gibt es aktuelle beim Gnome-Projekt.

Hört sich nach einem guten Einsteigerplan an, erstmal die "spezielle Erweiterung" zu finden, zu installieren und zu verwenden.
Es ist eine Möglichkeit, und nicht die einzige die ich aufgeführt habe. Die erste Empfehlung ist es auch nicht, aber man kann Python auch dafür verwenden. Persönlich würde ich aber Gtk+ nehmen.

Inwieweit ist Mono denn unzulänglich für Applikationen,
Mono erfordert Codeänderungen gegenüber Windows C#, und wenn spezieller Code benötigt wird (z.B. GtkSharp) ist das ganze Projekt sinnfrei. Weshalb dann nicht gleich eine der Sprachen, die vom Gtk+ Projekt besser unterstützt werden?
 
@oooverclocker
Du bist kein Programmierer.
Und dass du mit dem Betriebssystem Thema anfängst, war sowas von klar als ich nur deinen Namen gesehen hab :d
 
Wenn alles aus dem Hause Microsoft aber automatisch iiih und bäääh ist, dann spielt das natürlich keine Rolle.
C# ist unter *I*X ein Fremdkörper und wird deshalb nur mehr schlecht als Recht unterstützt. Es ist von keinem GUI-Toolkit die bevorzugte Programmiersprache. Gtk+ ist in C geschrieben und die Hauptsprachen sind: C++, Python, Vala und auch Javascript. Es gibt für Gtk+3 keine C# Bindings https://www.gtk.org/language-bindings.php und damit ist das Thema eigentlich durch.

So gerne ich embedded auf Linux programmiert hab - Hast du keine IDE oder Buildsystem was dich unterstützt kann das ganze sehr viel komplexer werden. Aber okay, es gibt ja Zeitgenossen die schreiben ihre makefiles noch von Hand.
Es gibt sehr gute Gründe die Makefiles von Hand zu schreiben, weil die meisten Tools leider unnötigen Ballast reinknallen, den man in den meisten Fällen ersparen kann, wenn man die Single UNIX Specification gelesen und berücksichtigt hat. Das hat auch früher auf verschiedenen UNICES besser funktioniert, als den ganzen GNU auto*** Tools Schmonz ins Projekt mit hineinzuziehen. Das macht früher oder später mehr Ärger als die Makefiles von Hand zu pflegen.
 
Es ist von keinem GUI-Toolkit die bevorzugte Programmiersprache.
Also von Unity schon. Die Entwickler versuchen teils ihre Alternative zu puschen, aber am verbreitesten in den Foren ist C#.


EDIT:
Wir sind jetzt allerdings bei Glaubensfragen angelangt. Zum Prorgammieren lernen eignen sich Java und C# so ziemlich exakt gleich gut.
C++ weniger.
Skriptsprachen wie Phython und JS geringfügig mehr, da am besten nachvollziehbar.

C wenn man nicht für höhere Betriebssysteme sondern hardwarenah entwickeln will (an meiner HS haben wir damit angefangen (und Java im zweiten Semester). Hatte selbst viel Vorerfahrung mit anderen Sprachen, aber auch anderen Studenten fiel es nicht so schwer, denn man kann auch da sanft einsteigen).



EDIT2:
Aber um das mit dem OS nicht komplett unkommentiert zu lassen:
Ob closed source oder nicht, sollte die allerletzte Sorge sein. Man sollte sich im klaren sein, dass man wenn man irgendwann Geld im Software bereich verdient, das produkt zu 99%iger Wahrscheinlichkeit, eine Closed-Source Umgebung zum Ziel haben wird. Selbst Android ist aus der Hinsicht closed source, denn fast alle Smartphonehersteller basteln am Android. Insbesondere an der GUI und die Hardwaretreiber sind auch oft closed.
Da ist es eigentlich sogar kontraproduktiv wenn man sich irgendeinen Programmierstil aneignen würde, der darauf basiert dass man in den Sourcecode des OS blicken kann o_O
Das tut aber zum Glück kein beruflicher Anwendungsentwickler der Welt.
 
Zuletzt bearbeitet:
1. Man besorgt sich ein hilfreiches Betriebssystem.

Ab dem Absatz hab ich das Lesen schon sein gelassen. Versteh mich nicht falsch, aber du hast echt keine Ahnung von professioneller Entwicklung. Ich entwickle jetzt schon seit mehrere Jahren mit PHP und Node.js, habe jetzt schon zwei Webapplikationen geschaffen, durch die mehrere Millionen Euro fließen und nicht ein einziges Mal habe ich in den Kern dieser beiden Sprachen geschaut oder gar in irgendwelche Betriebssystemkomponenten. Das kann einem so ungeheuerlich egal sein was da intern passiert, solange es funktioniert und schnell ist. Auf welchem OS man entwickelt ist vollkommen wurscht. Vor Allem so einen Absatz und dann vier Punkte weiter ein "Hallo Welt". Klar, der Anfänger schaut sich den Quellcode seiner Sprache und seines Betriebssystems an, damit er das "Hallo Welt" maximal optimieren kann. Und btw, ein Go ohne Compile Flags ist meistens schneller als ein C ohne Flags. "Nicht das Schnellste" ist faktisch einfach falsch.
 
Zuletzt bearbeitet:
Bis auf einen Ausflug in c# mach ich eigentlich auch alles von macos aus.

Atom ist mir plugins ein ziemlich mächtiges Werkzeug.

@TE

Ich würde dir empfehlen mit python anzufangen. Wenn einfach, zwingt dich förmlich zu ordentlichem Stil und deckt so ziemlich alle deiner Anforderungen ab (Stichwort Django)

Learning by doing:
Collection: Basic Python | Codewars


Gesendet von meinem LG-D855 mit Tapatalk
 
Zuletzt bearbeitet:
Und btw, ein Go ohne Compile Flags ist meistens schneller als ein C ohne Flags. "Nicht das Schnellste" ist faktisch einfach falsch.

Also hier im Benchmark-Spiel ist Go definitiv bei allen Aufgaben langsamer als C. Teilweise immens.
GoC gcc (64-bit Ubuntu quad core) | Computer Language Benchmarks Game

Rust ist fast gleich schnell wie C - in wenigen Fällen sogar schneller und kann somit auch Go klar schlagen:
RustGo (64-bit Ubuntu quad core) | Computer Language Benchmarks Game

Edit: Und auf Github gibt es viel mehr Go-Projekte als Rust-Projekte. Es ist also keinesfalls wahrscheinlich, dass für Go schlechtere Lösungen eingereicht wurden. Da hätte tendenziell eher Rust Nachteile.
Man sieht in der Github-Statistik auch sehr schön, dass beispielsweise bei Shell-Skript-Projekten sehr wenige offene Bugmeldungen pro Projekt sind und bei C++ und Rust sehr viele. Es ist auch logisch, dass sehr hardwarenahe, schwer zu programmierende Sprachen, deutlich mehr Bugs erzeugen, als so etwas abstraktes, wie ein Shellskript. Mit diesem Problem erkauft man sich dann eben die Performance.

Ich entwickle jetzt schon seit mehrere Jahren mit PHP und Node.js, habe jetzt schon zwei Webapplikationen geschaffen, durch die mehrer Millionen Euro fließen und nicht ein einziges Mal habe ich in den Kern dieser beiden Sprachen geschaut oder gar in irgendwelche Betriebssystemkomponenten.
Also JavaScript/PHP etc. sind so meilenweit vom Betriebssystem entfernt, dass es natürlich keinen Sinn macht, sich Betriebssystemfunktionen anzusehen. Da schaut man sich lieber andere Webseiten an etc. Ich muss auch gestehen, dass ich eine Programmiersprache, die keine Möglichkeit für Inline-Assembler-Code bietet, eher nur nutze, wenn ich es muss - beispielsweise bei Webentwicklung :)
Man kann ja auch nicht immer das haben, was man möchte - wenn doch, kann man sehr glücklich sein. Für mich privat wären Webprogrammiersprachen definitiv nichts ;)

Aber natürlich ist es auch schön, dass es verschiedene Arten von Programmierung gibt - manche sorgen dafür, dass Zahlen sicher von A nach B kommen, andere lassen Programme schneller starten, weitere führen Vektorberechnungen zur Überprüfung der Statik eines Gebäudes durch und wieder andere speichern Daten in Datenbanken.

Das Problem ist nur - wenn man vorher nicht Sprachen wie C gelernt hat, kann man viele Dinge nicht so gut nachvollziehen, wie sie intern auf der Hardware ablaufen. Und deshalb sehe ich es als optimal an, wenn man ein breites Spektrum von Low-Level-Sprachen wie Assembler bis zu extrem von der Hardware abstrahierten Sprachen wie PHP abdecken kann.
Deshalb würde ich trotzdem mit C/C++ anfangen, auch wenn man am Ende bei PHP bleibt.
 
Zuletzt bearbeitet:
Das "Hello World!" Beispiel taugt überhaupt nichts zu dokumentieren wie leicht oder schwer man mit einem bestimmten GUI-Framework ein GUI entwerfen und umsetzen kann. Insofern ist der Einzeiler ohne jeden Bezug zum eigentlichen Problem. Was also bringt so ein simpel Beispiel an Nutzen?

Das simple Beispiel soll sagen, dass man für Javascript exakt 0 Vorbereitung und Überlegung braucht (GUI war da noch nicht gemeint - modale Dialogboxen sind ja auch schon seit ein paar Jährchen nicht mehr wirklich en vogue). Tutorial auf und los geht's, auch z.B. hier Create a new fiddle - JSFiddle. Java mit IDE downloaden, installieren und zurechtfinden dauert eben schon mal 1h ;) (je nachdem, wie schnell das Netz ist). Und in dieser Stunde hat man sich dann auch eingelesen, wie man ein wenig HTML als GUI verwenden kann (und das ist auch nicht schwerer, als andere GUIs). Ich sage auch nicht, dass es die beste Option zum Einstieg ist, im Gegensatz zu dir halte ich es allerdings für eine sehr valide Option (mich würde allerdings noch interessieren, welchen Workflow scrollt für den Einsteiger empfiehlt)?!

Was jetzt das Problem an GTK# ist, weiß ich nicht? Funktioniert mit MacOS und Mono und es gibt eine Reihe realer Cross-Platform-Applikationen. Außerdem kann man C# eben überall verwenden (Unity, ASP.NET Core, Xamarin Forms), solange man kein Problem mit proprietärer Software hat - Sprachfeatures sind eine frei implementierbare Spec und ich wüsste nicht, mit welchen Sprachfeatures sich "Windows C#" von C#, das der Mono-Compiler implementiert, abgrenzen würde; bei Swift sieht das (Stand heute) leider definitiv anders aus – unterstützt das irgendjemand, außer Apple?

Am Ende ist das allerdings auch eine Frage des persönlichen Geschmacks und zu welchem Zweck ossifan das ganze plant.
Will er einfach nur "programmieren lernen" und ein paar Apps für seinen Privatgebrauch erstellen, kann er effektiv nehmen, was er will – der Erfolg skaliert mit der Zeit, die reingesteckt wird, und solange er nicht Julia nimmt, wird es hoffentlich auch kein Problem in der Zukunft geben (gibt ja auch noch Leute, die hobbymäßig Pascal, Delphi und diverse Basic-Dialekte programmieren – geht aber nur, wenn die Tools in Zukunft noch da sind, was wohl nur bei Windows gegeben ist).
Will er sich damit beruflich weiterbilden, bleibt vermutlich die Wahl zwischen Swift (iOS-Apps), C# (alles – ist einfach so ;)), Javascript (Web(-apps)), Python (Datenanalyse/Web) und dem zugehörigen Ökosystem.

oooverclocker: dein Linuxeifer in Ehren, aber vllt. zeigst du doch in deiner IDE besser deinen Code, statt einem Treiberpackage (die 400 Zeilen kann selbst ich irgendwie füllen ;))...
 
oooverclocker: dein Linuxeifer in Ehren, aber vllt. zeigst du doch in deiner IDE besser deinen Code, statt einem Treiberpackage (die 400 Zeilen kann selbst ich irgendwie füllen ;))...

Wenn ich meinen eigenen Code zeigen würde, wüsste man ja, was ich gerade mache :) - und das war nur exemplarisch gemeint dafür, dass man auf Linux auch ohne grafische Oberfläche eine Entwicklungsumgebung schaffen kann, mit der man sehr zügig entwickeln kann. Ich denke mal,wenn man sich das jetzt auf 2-3 Bildschirmen vorstellt, oder eben mit mehreren Terminalsessions, die man per Tastenkombination wechseln kann, erkennt man, doch relativ schnell, dass das mindestens genauso mächtig ist, wie Eclipse oder sowas - bis darauf, dass ich da nicht auf ein Schlüsselwort klicken kann, um zur Implementierung zu kommen. Aber das lässt sich verschmerzen - gibt ja den schönen grep-Befehl.
 
Zuletzt bearbeitet:
Hey Ossifan,
nicht alle Entwickler reden so komisches Zeug am Thema vorbei. Wollt ihr nicht vielleicht in einen anderen Thread ausweichen und eure Glaubenskriege führen? Das führt doch hier den Fragesteller überhaupt nicht weiter.

Er will programmieren lernen (also einen Kurs machen, Bücher lesen, die erstmal unabhängig von der Sprache sind. Java ist an Unis sehr beliebt), und dann eine Webseite bauen Datenbanken anzapfen.


Nur noch mal zur Erinnerung...


Und PS: man merkt wenn Leute über etwas schreiben, dass sie zwar hier und da gelesen haben, aber nicht ernsthaft einsetzen und können, nur mal so am Rande erwähnt...
 

Schreib ne größere Webanwendung und mach Gebrauch von Goroutinen, dann dreht sich das Blatt ganz schnell um. Goroutinen sind ne ganze Ecke effizienter als Threads. Und der Go-Webserver ist inzwischen schon ähnlich schnell wie Nginx im Ausliefern statischer Dateien.
 
Der Vergleich von Go mit C hinkt auch ein wenig.. GO ist mit relativ genau bestimmten Zielen entwickelt worden (und wird von Google selbst ja auch so eingesetzt) und nicht als universelle Systemsprache.
Da ist Rust in der Tat das bessere Beispiel, denn dieses ist sozusagen als deutlich sicherere C(++) Ablöse gedacht... Leider ist es sehr schwer hundert tausende an Entwickler umzustellen und darum ist dessen Vermögen, sich in naher Zukunft, oder überhaupt weitgehend zu etablieren, schwierig. Wünschenswert wäre es aber durchaus.

Scrollt hat allerdings recht. Wir haben den Thread ganz schön gekillt.

Denke mal die Fragesteller (waren ja 2, oder?) haben zumindest Anregungen und dazu gesehen, dass es keine ultimative Antwort gibt.
 
Zuletzt bearbeitet:

Ähnliche Themen

Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh