Java, C# oder C++ autodidakt

Benutzer12784  (39)

Sehr bekannt hier
Hallo,
Da ich zur Zeit etwas mehr Freizeit habe, wollte ich mir ein paar Grundlagen einer Programmiersprache anzueignen.
Zur Auswahl standen Ursprünglich, C++ Java oder C#. Wobei ich durch Recherche eigendlich mal auf C++ fixiert war, da ich gelesen habe, dass man sich da den beseren Stil angewöhnt, und man danach auch ohne Probleme auf Java oder C# umsteigen kann.
Stimmt das so oder wäre Java oder C# doch angebrachter.
Und, könnt ihr eventuell gute Einsteigerbücher empfehlen?
 

Benutzer14969  (34)

Verbringt hier viel Zeit
Hi !

Also um grundlegende Programmiertechniken zu erlernen eignen sich alle die höheren Sprachen die du genannt hast. Im Hinblick auf den späteren Nutzen fände ich es sinnvoll mit C/C++ anzufangen... Ich will nicht sagen das C/C++ die schwerste Wahl ist.. aber doch leicht unübersichtlicher für den Anfang als z.B Java. Man schleppt z.B solche Dinosaurier wie den Präprozessor mit... Gewöhnungssache.

"C++: Objektorientiertes Programmieren von Anfang an" von Helmut Erlenkötter

Ich hab mir u.A. mit dem Buch C/C++ grundlegend selber beigebracht und dann weiter mit anderen Büchern vertieft. Jetzt zum Studium muss ich zunächst alles in Java abgeben, da Java keine Betriebssysteme abhängigen Unterschiede hat. Es fällt mir leicht mich umzustellen. .. Andersherum wüsste ich nicht ob das so wäre. Nach dem Grundstudium wird das ganze dann auf C/C++ schwenken (Mikroprozessorprogrammierung etc.).




David
 

Benutzer54399 

Planet-Liebe Berühmtheit
Kurz zu mir: Ich bin gelernter Software Entwickler, habe früher etwas mit Java und C# gearbeitet, aktuell fast nur noch C#.

C++ würde ich aus meiner Überlegung streichen, außer du lernst wirklich nur rein zum Spaß. Ansonsten fang gleich mit einer modernen Sprache an. In Firmen wird C++ immer mehr abgelöst, das wird immer mehr zur Sprache für spezielle Anwendungen.
Für alles andere wird fast nur noch Java oder C# genutzt (je nach Anwendungsgebiet).

C# nimmt dem Entwickler sehr viele unangenehme Arbeit ab und hat entsprechende Funktionen dann in seinem Framework. Gut, sauber und schön programmieren lernen kannst du auch gleich in C#, dafür musst du nicht erst C++ oder gar C können.
 

Benutzer9402 

Meistens hier zu finden
Ich würde Dir zu Java oder C# raten (ich selbst bin Java-Entwickler). Mit diesen beiden Sprachen wirst Du am Anfang schneller zu Ergebnissen kommen, da diese nicht so viele Fallstricke wie C/C++ haben.

Wichtiger als die Programmiersprache sind jedoch Programmiertechniken. Denn auch mit Java und C# lässt sich sehr unleserlicher und fehlerhafter Code schreiben.

Hier kann ich nur für Java sprechen, da ich C# zu wenige kenne. Heutzutage reicht es nicht mehr aus nur eine Sprache oder Programmiertechniken zu beherrschen, sondern es müssen auch die z.T. sehr umfrangreichen Frameworks (z.B. bei Java sind das Hibernate, Spring usw.) beherrscht und die dahinterliegenden Konzepte verstanden werden.
 
H

Benutzer

Gast
Du hast "Freizeit" geschrieben. Wenn das stimmt, fang alle drei an und mach das, was Dir Spaß macht.
Und wenns irgendwo keinen Spaß macht oder nichts bringt, dann hör damit auf.
Programmiersprachen lernt man eh nicht wie normale Sprachen. Im Prinzip lernst Du "Sprechen" (=Programmieren) allgemein. Da gibts ein paar unterschiedliche Varianten. Und zu den Varianten gibt es wiederum mehrere Sprachen oder sprachähnliche Umgebungen.
Das kommt aber sowieso immer darauf an, wen man fragt. Für den einen liegen meilenweite Unterschiede zwischen C# und Java. Für den anderen sind Prolog und SQL "dicht beeinander" und für den dritten ist "eh alles gleich", weil er im Schlaf mit Transistoren redet. :zwinker:

WAS willst Du denn mit den Sprachen machen? Du hast ja anscheinend keine "Lernverpflichtung". Worauf hast Du denn Lust?
Für gewöhnlich wählt man sein Werkzeug nach dem, was man damit tun will. Seitenschneider vs. Hammer und so ...
Und Programmiersprachen sind Werkzeuge.
 

Benutzer67523 

Sehr bekannt hier
Kommt sehr drauf an, was Du programmieren willst. Hast Du ein konkretes Ziel?
z.B
- Computergrafik, Systemprogrammierung, Hacking: C, C++
- Web (Front ends): JavaScript (wobei das keine Beginnersprache ist, zu unsinnig..., je nach dem Ruby, Java, (oder, wenn Du wirklich willst, auch PHP fuer die Generierung der Inhalte server-seitig)
- Web (Back ends, networking): Java macht das recht einfach
Schoene GUIs auf Windows-Maschinen: C#
Schoene GUIs im Browser: Flex
- Erstellen von nuetzlichen Hilfsmitteln fuer's Alltagsleben: (Je nach Deinem Leben :grin: ) Python, Matlab, (u.U auch Perl, wobei das fast immer eine schlechte Wahl ist)
- Mobile: Objective C fuer iPhone Apps, Java fuer Android und BlackBerry apps, C# fuer Windows Phone, C++ (bzw. spezielle Abarten dessen) fuer Symbian und Windows Mobile (wenn Du die letzten zwei ueberhaupt ernsthaft in Betracht ziehen solltest...) und JavaScript/CSS/HTML fuer Palm Pre.
Funktioniales Programmieren: F# (wenn's Dich interessiert - man lernt Konzepte extrem gut damit. Fuer alle Interessierten: Immutable objects, und viele andere gute Designtechniken macht man automatisch richtig mit funktionalen Sprachen, da's gar nicht gross anders geht.
- Erlernen von "glasklarer" Objekt-Orientierung: SmallTalk, Eiffel (beide nur von akademischer Bedeutung)
- Wenn Du Mathe liebst: Fortran. Lacht nicht :smile: Fortran ist nach wie vor (und auf mehrere Jahre hinaus!) immer noch die Sprache, in der die komplexesten Algorithmen implementiert sind, numerisch stabil, etc. Natuerlich wuerde man lieber eine andere Sprache nehmen, aber eben - die Algorithmen-Bibliotheken draengen einen zu Fortran. (In Fortran-Bibliotheken findet man 10'000e von Mannjahren Arbeit von Mathe-Experten. In C/C++/Java/C# jeweils bestenfalls ein paar Tausend, wenn ueberhaupt.

Wenn Du auf den Job-Markt hin optimieren willst:
JavaScript, (und halt CSS/HTML) werden Dir bald kleinere Anstellungen ermoeglichen, Ruby ebenfalls fuer die Server-Seite. (Viele kleine Shops etc. brauchen heute Ruby.), und mit C# wird auch recht viel (und uebel...) rumgehackt.

Wenn Du eine Produkt-Idee hast und einfach auf eine kurze "Time to Market" oder Zeit bis zur Demo aus bist:
Ruby+JavaScript fuer Web, Java fuer die meisten Client-Sachen. e.g. Ein Dienst wie Instagr.am oder Twitter, aber auch Facebook bis vor kurzem, sind notorisch bekannt fuer ihre schlechten Loesungen. Nur spielt das ja in so einem Fall nicht so eine Rolle - das kannst, mit entsprechendem Aufwand, spaeter noch richten.

Laengerfristige, anspruchsvollere bis professionelle Anstellungen: Java, C#, komplexere Webloesungen mit JavaScript/CSS/HTML5

Profi-Programmierung in speziellen Gebieten: (Grafik, Betriebssysteme, Performance-kritische Dinge) C, C++, Assembler

Die Konzepte etc. lernst in jeder Sprache. Wahrscheinlich spielt fuer Dich viel mehr eine Rolle, was Du zu programmieren planst.

da Java keine Betriebssysteme abhängigen Unterschiede hat.
ohje, das glaubten viele andere auch schon...
Fairerweise: Du kriegst ein einfaches Programm ganz gut hin, ohne dass es betriebssystem-unabhaengig ist: Der zwei Seiten lange Algorithmus, den Du im Studium abgeben musst, wird funktionieren. Danach wird's schon schwieriger. Behalte im Hinterkopf, dass Unterschiede der Plattform nicht so einfach wegabstrahiert werden koennen. Ein paar Beispiele:
- Java und Symlinks, Java und Filepermissions. Alles nicht so rosig. Du brauchst nicht notwendigerweise Symlinks zu kreieren mit Java und Du kannst dennoch auf Probleme stossen.
- Dateinamen und UTF-8 encoding. (Java-Strings sind UTF-8, Dateinamen meistens nicht. Die Uebersetzung macht die Windows-JVM und eine Linux-JVM nicht immer gleich. (Die Umsetzung des Namen-Strings von UTF-8 nach ASCII macht uebrigens den stat() call in Java viel langsamer als mit C, etc.)
- Networking: Mit gaenzlich Plattform-unabhaengigem Java stoesst hier schnell an Grenzen bezueglich Effizienz. Es ist zwar einigermassen Plattform-Unabhaengig, nur schnell wird's nicht, solange Du nicht z.B die ganze "Kraft" von select() in Unix zur Verfuegung hast.
- Thread-Scheduling: Hoechst verschieden, 0 Garantien zwischen verschiedenen JVMs
- HotSpot-Optimierung, Method inlining, ebenfalls verschieden
- Aber auch Dinge wie das Memory-Modell koennen durchscheinen. Wenn Du grosse Objekte allozieren willst, kannst durchaus auf einer Linux-Maschine erfolgreich sein, waehrend Du mit dem Windows-Pendant auf die Nase faellst. (Memory fragmentation wird anders gehandhabt, siehe unten)
- Aber auch Dinge wie "Wann fuehrt die JVM ein flush() durch?", "Wann ein stat(file)?" sind sehr verschieden

Natuerlich kann man sagen "Verlass Dich nicht auf JVM-Eigenheiten", wenn Du programmierst. z.B "Kuemmere Dich nicht, wann die JVM Garbage Collection durchfuehrt." - Ich bin vollstens einverstanden. Es gibt aber ein fieses Problem: Man verlaesst sich ueberall auf die Dinge, ohne es ueberhaupt wissen zu koennen. Beispiel: eine WeakHashMap zeitigt ein massiv verschiedenes Wachstums- und Groessenverhalten auf verschiedenen JVMs, von Phantom-Referenzen etc. gar nicht zu sprechen. Oder finalizer-Sequenzen zeigen ihre Bugs auf einer JVM und nicht auf einer andern, etc. Und das entscheidet dann eben, ob Du ein bestimmtes Problem loesen kannst, oder ob Du auf die Nase faellst. etc. Der Weg hier ist voller Fallstricke.
Nun gut - in C/C++ musst Dich von vornherein selbst um diese Dinge kuemmern. Ob das besser ist, sei dahingestellt.
 

Benutzer12784  (39)

Sehr bekannt hier
Erstmal danke euch allen für eure Antworten.

Es ist so, vor 10 Jahren hab ich schon mal begonnen Informatik zu studieren. Wobei ich mir das erste Jahr eher als Freijahr genommen habe (was ich auch nicht beräue). Problem war, a) das ich mich vorher nicht wirklich intensiv mit dem Stoff des Studiums beschäfftigt habe, und gleichmal heillos überfordert war. (war ich allerdings nicht der einzige) und b) das ich nach dem ersten Jahr aus familieren Gründen gleich wieder aufhören musste. War nichts zu ändern, und auch heute muss ich sagen, (auch wenn ich denke, dass es ein Fehler war aufzuhören) dass es keine andere Möglichkeit gab.

Im jetzt mach ich all abendlich noch eine Weiterbildung, bei der ich auch wieder viel Zeit am PC verbringe. Wenn auch hauptsächlich mit SQL und HTML. Und ich merk einfach das es mir Spaß macht, wenns auch nicht genau das ist was mich brennendst interessiert.

Und genau deswegen, möcht ich wissen, ob ichs noch schaffe mir das beizubringen, was ich früher mal nicht gelernt habe. Wenns mir Spaß macht und ich was zu Wege bringe, kann ich immer noch überlegen ob ich nicht auch nochmal ins Studium einsteige.

Und genau aus letzterer Überlegung heraus hab ich mich für c/c++ entschieden. Wenns mir liegt und Spaß macht hab ich mir damit gleichmal eine Basis geschaffen auf der ich aufbauen kann.

Und zum aktuellen was. Derzeit wohl hauptsächlich Spielehilfen, zB einen Würfelsimulator fürs Rollenspiel (D&D, Shadowrun) Oder für selbiges wenn auch in weiterer Ferne einen Karteneditor (Also schnelles aneinanderreihen von vorgefertigten Kartenteilen mit Druckfunktion) Oder ein Virtuelles Overlord Deck fürs Descent Spielen. Eigendlich hauptsächlich Dinge, die mir andere Hobbys erleichtern, dies zwar auch schon gibt, aber eben eine Interessante Aufgabe bieten.
 

Benutzer97441  (27)

Öfters im Forum
Off-Topic:
In Amerika lernens die "kleinen" also 11-klässler und höher mit Macromedia Flash :grin::grin:
 

Benutzer10845  (45)

Verbringt hier viel Zeit
Au Mann, wenn ich das so lese was einige "Experten" hier schreiben wird mir richtig schlecht; vor allem wenn man bedenkt, dass ich echt eine Anstellung haben und Geld mit ihrem Unsinn verdienen, lach. Vor allem was einige "gelernte (lach)" Software Entwickler hier so von sich geben ...

Aber mal Back Top Topic :
Du möchtest Programmieren lernen und hast Dir diese 3 Sprachen quasi ausgesucht wobei Du eine Dir genauer anschauen möchte; von Prinzip her eine gute Wahl. Auch aktuelle Software Systeme sind in C / C++ geschrieben, wie z.B. das Bundes Zentral Register oder das Zentrale Staatsanwaltliche Verfahrensregister; Das Managementsystem der Test & Development Cloud von der Siemens AG ist in Java geschrieben und in C# das Dispositionssystem der Deutschen Post AG.

Im Prinzip kommt es hier wirklich weniger auf die Programmiersprache an, sondern auf die Governenance, die Compliance und die damit einhergehende System - Infrastruktur. Jede dieser 3 Sprachen hat in unserer Zeit eine absolute Darseinsberechtigung. Für hardwarenahe Entwicklung bietet sich das Konstrukt C/C++ an, für homogene verteilte Systeme C# mit dem .NET Framework (Windows only), für heterogene Systeme Java, wobei man hier auch C / C++ einsetzen kann.

Interessanter ist vor allem die Algorithmik und generell das Verständnis von Programmiermethodiken und technischen Basics, wie z.b. SOA, BPM o.ä.

Als Einstiegssprache für Fun - Programmierungen sind alle 3 geeignet, wobei man in C++ schon etwas sauberer arbeiten muss, siehe z.b. das friend konstrukt oder die Pointer Arithmetik und Speichermanagement; um all dieses musst Du Dich selber kümmern was dazu führt, dass du sehr schnell code schreiben kannst; der aber von programmiertechnischen her einige Sauereien beinhaltet, wie z.b. Pointer auf Referenzen und dergleichen.

Java hat den smarten Vorteil, dass es so gut wie auf jedem aktuellen PC - Betriebssystem zur Verfügung steht und auch läuft; du hast sehr einfache Möglichkeiten WebApps zu basteln mit JSF oder Desktop Anwendungen z.b. mit Swing und die Datenbank Verbindung wird auch direkt mitgeliefert, als JDBC.
Hier gibt es aber auch viele einzelne Frameworks, die mehr oder minder aufeinander abgestimmt, Dir die Arbeit massiv erleichtern. Entwicklungs- und Laufzeitumgebung, wie auch die Frameworks sind in der Regel kostenfrei. Hier bietet sich z.b. Eclipse, JBoss AS und MySQL an zum rumspielen für komplexere WebAnwendungen; es gibt hier sogar freie Portal Lösungen wie z.b. Lightray oder Exodel Portal.
Also es gibt hier massig zum Spielen und ausprobieren.

Nunmal zu meinem Stiefkind C#; ich muss gestehen ich mag diese Sprache und das .NET Framework nicht wirklich. Als ich damit angefangen habe war Framework 3.5 schon draussen und es fehlten in ASP.NET immer noch Widgets die seit Ewigkeiten in JSF vorhanden sind. Übrigens kann man schöne Windows Desktop Programme nicht nur mit Winforms in C# schreiben; es bietet sich auch C / C++ und die MFC an. C# ist von der reinen Programmiersprach her recht solide obwohl MS hier gut von Java geklaut hat und natürlich einige Elemente der Vorgängersprache C++ übernommen hat; ein grosser Nachteil => den vollen Umfang erlebst Du nur in einer reinen Windows - Welt. Es gibt zwar eine Emulation für Linux (Mono) aber die ist weit hinter der aktuellen .NET Entwicklung hinterher. Es gibt auch eine Menge Widgets, die aber in der Regel kommerziell sind; sprich Lizenzkosten fallen hier an. Für C# und auch C / C++ bietet sich das MS DevStudio an, welches in der Express Variante auch kostenfrei ist.

Fazit: Die Programmiersprache ist wirklich egal und da kannst Du Dich frei nach Deine persönlichen Wünschen und Zielen richten. Ich würde Dir als Tip geben die Programmierparadigmen zu lernen und Dir die Bücher Clean Code und Code Complete anzuschaffen und diese durchzuarbeiten. Die meisten technischen Sachverhalte kannst Du mehr oder minder mit allen 3 Entwicklungssystemen lösen, ausser Spezialfälle wie hardwarenahe Programmierung oder Heterogenität, wo C# komplett aussen vor bleibt.

Könnte noch mehr Beispiele bringen was man mit den einzelnen Systemen machen kann, aber da verweise ich auf meinen Doktor Vater der bei Beweisen meistens sagte, den Rest überlasse ich dem geneigten Leser :smile:

LG
 

Benutzer54399 

Planet-Liebe Berühmtheit
Au Mann, wenn ich das so lese was einige "Experten" hier schreiben wird mir richtig schlecht; vor allem wenn man bedenkt, dass ich echt eine Anstellung haben und Geld mit ihrem Unsinn verdienen, lach. Vor allem was einige "gelernte (lach)" Software Entwickler hier so von sich geben ...

Und jetzt darfst du mir gerne noch sagen, wo sich meine (ich denke mal, dass sich der Teil mit dem gelernten auf mich bezieht) Aussage von deiner großartig Unterscheidet? Ich habe mir die Fachausdrücke erspart, die jemand, der nicht aus der Richtung kommt, eh nicht versteht. Und während du eben eher auf Java stehst, bin ich lieber in der .NET Ecke.

Für Reliants Bedürfnisse passt Java oder C# am ehesten. C++ bietet hier einfach keine Vorteile, dafür jede menge Stolpersteine. Aber man kann ja auch mit einem Vorschlaghammer irgendwie den Nagel in die Wand bekommen. :zwinker:
Da er allerdings eh nur schauen möchte, ob er es geschafft hätte, scheint ja die Frage nach dem idealen Werkzeug hier gar nicht gestellt zu werden.

Natürlich ist die Programmiersprache am Ende egal... wenn man sie kann. Wenn man sie aber erst lernen muss, dann ist der alte Ansatz von "fang ganz unten an und lern C/Basic/etc" einfach veraltet.

Allerdings lieferst du hier natürlich ein sehr schönes Beispiel, dass es auch in der Welt der Softwareentwickler die Glaubenskriege gibt. Da gibt es dann auch die C++ Entwickler, die es absolut unverständlich finden, dass man ein so großes Framework benutzt, kann man doch alles selbst schreiben. Dann natürlich auch die Java-Entwickler, die ewig mit ihrem "bei uns ist alles kostenlos und wir könnens auch auf Linux!" daher kommen. Natürlich auch die Delphi-Entwickler... die zwei stehen da hinten. :grin:
 

Benutzer10845  (45)

Verbringt hier viel Zeit
Hmm ich denke du hast mich leicht falsch verstanden; ich denke generell, dass die Theorie dahinter wichtiger ist als das eigentliche Ausführen, zumal wie der Threadersteller ja auch schrieb, es als Freizeitbeschäftigung nur machen möchte und für Fun ist es egal; da würde ich ihm sogar C# empfehlen, weil er wahrscheinlich eh eine Windows Kiste hat und so das all in one Packet von MS eben runterladen kann.

Wenn er mehr möchte, so eben Java mit Blick auf die Kosten ... und für hardwarenah eben C++ ... ich meine alle 3 sind (hust mit Blick auf C++) Objektorientierte Sprachen und bieten über den Daumen gepeilt die ähnliche Sprachmittel um den OOP Ansatz umzusetzen.

Aber wie gesagt aus meiner Sicht irrelevant; mein Fokus wäre da eher sowas wie Clean Code oder Code Complete, siehe meinen Beitrag.

btw und OT ... du hast geschrieben ERLERNTER Software Entwickler ... was kann ich mir darunter vorstellen ? Fachinformatiker ?

LG
 

Benutzer54399 

Planet-Liebe Berühmtheit
Hmm ich denke du hast mich leicht falsch verstanden; ich denke generell, dass die Theorie dahinter wichtiger ist als das eigentliche Ausführen, zumal wie der Threadersteller ja auch schrieb, es als Freizeitbeschäftigung nur machen möchte und für Fun ist es egal; da würde ich ihm sogar C# empfehlen, weil er wahrscheinlich eh eine Windows Kiste hat und so das all in one Packet von MS eben runterladen kann.
Gut, das sehe ich dann vielleicht etwas praktischer. Die Theorie ist schön und gut, nur willst du als Anfänger eher Ergebnisse sehen. Aus dem Grund hätte ich schon zu C# geraten, weil es einfach weniger Einstiegshürden hat.

Wenn er mehr möchte, so eben Java mit Blick auf die Kosten ... und für hardwarenah eben C++ ... ich meine alle 3 sind (hust mit Blick auf C++) Objektorientierte Sprachen und bieten über den Daumen gepeilt die ähnliche Sprachmittel um den OOP Ansatz umzusetzen.
DevExpress hast du ja selbst schon erwähnt, wenn er nicht in den kommerziellen Bereich möchte, dann sollten die Kosten für Java und C# gleich sein (Null).

Aber wie gesagt aus meiner Sicht irrelevant; mein Fokus wäre da eher sowas wie Clean Code oder Code Complete, siehe meinen Beitrag.
Das ist dann halt wieder die Frage, wie ernst er die Sache angehen möchte. Code Complete hab ich hier auch rumliegen und das ist halt keine Einstiegslektüre und es parallel zum Lernen zu benutzen... puh. Damit würde ich erst später ansetzen.

btw und OT ... du hast geschrieben ERLERNTER Software Entwickler ... was kann ich mir darunter vorstellen ? Fachinformatiker ?
Genau.
 

Benutzer10845  (45)

Verbringt hier viel Zeit
Ohne ein solides und vor allem auch fundiertes Theoriewissen leistet man in der Praxis nur Müll, erwiesenermaßen ... ich meine nicht umsonst beschäftigt man sich über 5 Semester mit der Theorie zur Programmierung (im weitesten Sinne) und mit der Programmierung selber nur ein Semester.

Da werden ja auch entsprechende Paradigmen wie Model Driven Architecture etc besprochen, was man z.b. in einer Ausbildung nur am Rande, wenn man überhaupt, was davon mitbekommt und dies ist nunmal Theorie, wie auch Algorithmik und und und. Die Frameworks und auch die Programmiersprachen sind lediglich Werkzeuge, wie man eben Probleme lösen kann.

Die Kosten sind nicht unbedingt gleich (null), weil leider viele schöne Widgets für C# kommerziell sind oder man programmiert diese als ownerdraw - control selbst, was widerum sehr mühsam sein kann. Man muss sich einfach klar sein wenn man wirklich tiefer gehen will kommt man um gewisse Kosten in der C# Ecke nicht drumrum, leider...

Hmm finde schon, dass Code Complete eine Einstiegslektüre ist ... zumal, wenn man schon Code "verbricht" so sollte der Code wenigstens ansatzweise sauber sein; vor allem wenn man überlebt wieviel Millionen $ pro Jahr (international) für Code Bereinigung und Fehlersuche verschleudert wird; damit meine ich jetzt nicht Change Requests, sondern wirklich reines bug finding und fixing ... weil dieses bringt einer Firma 0 !!! ein an Umsatz und kostet faktisch nur ... wenn aber eine Firma von Anfang an in vernünftig geschultes Personal oder in Schulungen für ihr bestehendes Personal (was ich im Übrigen u.a. beruflich mache) investiert, so macht sie unter dem Strich deutlich mehr Umsatz, weil einfach weniger Fehler auftreten und so mehr Resourcen für CR oder Neuentwicklung zur Verfügung stehen und ja ... auch Stellen eingespart werden können.

Deswegen weiss ich, dass ohne verünftiges Theoriewissen und auch vernünftige Grundstrukturen wie z.b. IssueTracking, UML, automatisierte Tests, nightlybuilds etc, das Programmieren einfach nur dummes rumgegimpe ist und entsprechende Programmierer lieber wieder Brötchen backen oder sonst was machen sollen, aber keine Software schreiben.

LG
 

Benutzer54399 

Planet-Liebe Berühmtheit
Da werden ja auch entsprechende Paradigmen wie Model Driven Architecture etc besprochen, was man z.b. in einer Ausbildung nur am Rande, wenn man überhaupt, was davon mitbekommt und dies ist nunmal Theorie, wie auch Algorithmik und und und. Die Frameworks und auch die Programmiersprachen sind lediglich Werkzeuge, wie man eben Probleme lösen kann.
Würde dir gerne widersprechen, kann ich aber nicht. Was man in der Ausbildung (schulisch) lernt ist Müll. Die Prüfung ist gelinde gesagt für den Arsch. Wenn man da am Ende weiß wie eine normalisierte Datenbank auszusehen hat, dann gehörte man schon zu den Top-Leuten.
Um mal meinen Programmierlehrer am Anfang der Ausbildung zu zitieren: "Wir machen die nächsten Jahre Java, ich kann das bisher auch nicht, also lernen wir das zusammen.". So sah dann in etwa auch der Unterricht aus. Dazu kam noch, dass das zu meiner Zeit gerade Hip war etwas mit Computern zu lernen, deshalb hat sich damals auch jeder der einen PC einschalten konnte berufen gefühlt. Dass man in den zwei Jahren etwas über Vererbung gelernt hat war schon das höchste der Gefühle. Nach zwei Jahren hatten wir noch Leute in der Klasse, die ohne fremde Hilfe keine Schleife programmieren konnten (kein Scherz).

Ich persönlich hatte das Glück, dass mein Ausbildungsbetrieb sehr korrekt war und mir auch außerhalb der Schule Lehrgänge spendiert hat, in denen man dann wirklich was gelernt hat und eben auch bei der Software auf die Struktur und Techniken geachtet wurde.
Und natürlich hatte ich das Glück, dass ich nicht Entwickler geworden bin, weil ich am PC gerne eMails geschrieben hab, sondern weil ich es vorher schon ein Hobby war.

Die Kosten sind nicht unbedingt gleich (null), weil leider viele schöne Widgets für C# kommerziell sind oder man programmiert diese als ownerdraw - control selbst, was widerum sehr mühsam sein kann. Man muss sich einfach klar sein wenn man wirklich tiefer gehen will kommt man um gewisse Kosten in der C# Ecke nicht drumrum, leider...
Gib mal ein paar Beispiele, bitte.

Hmm finde schon, dass Code Complete eine Einstiegslektüre ist ... zumal, wenn man schon Code "verbricht" so sollte der Code wenigstens ansatzweise sauber sein; vor allem wenn man überlebt wieviel Millionen $ pro Jahr (international) für Code Bereinigung und Fehlersuche verschleudert wird...
Für das Programm zu Hause wird das halt eher weniger vorkommen. :zwinker:

Deswegen weiss ich, dass ohne verünftiges Theoriewissen und auch vernünftige Grundstrukturen wie z.b. IssueTracking, UML, automatisierte Tests, nightlybuilds etc, das Programmieren einfach nur dummes rumgegimpe ist und entsprechende Programmierer lieber wieder Brötchen backen oder sonst was machen sollen, aber keine Software schreiben.
Das finde ich halt ein klein wenig übertrieben. Wenn ich mir für zu Hause eine Software schreibe (eben im kleinen Umfang wie von Reliant beschrieben), dann fertige ich mir auch keine Diagramme an, schreib Unit Tests oder hab irgendwelche CI Builds am laufen.
Im Büro hingegen sollte das eine Selbstverständlichkeit sein, ob es dann gemacht wird oder nicht, das hängt halt auch nicht davon ab, ob man studiert hat, Quereinsteiger ist oder eine Ausbildung hat, das hängt von dem Mann eins über dir und von einem selbst ab.
 

Benutzer10845  (45)

Verbringt hier viel Zeit
Die Programmiersprachen, die ich an der Uni gelernt habe waren auch alle Müll, so z.b. Beta, Eiffel, SML ... C, C++, Java, etc habe ich mir alle innerhalb von Projekten selber beigebracht; aber es ging recht fix, weil die grundlegenden Konzepte mir ja durch meine "Ausbildung" (Dipl. Inform) eh geläufig waren... so habe ich auch eine Menge anderen "Schrott" wie Ada, Cobol, SmallTalk, Modula2, etc mir angeeignet; es geht eben um die entsprechenden Konzepte dahinter, wenn die klar sind; sind die verwendeten Sprachen eh alle grösstenteil Äquivalent.

Ein Beispiel ist z.b. für eine Digitale Signatur Applikation die im Zuge des neuen Persos in C# mit Winforms etc erstellt werden musste; das zugrundeliegende Control für die Zertifikat anzeige (Name, Issuer, Distinguishname, etc) wurden in einer Dropdown Box dargestellt und zwar, dass alle Informationen untereinander in einem Feld dargestellt werden; die std dropdown box ist einzeilig pro item für eine bel. anzahl items in der view. Diese Komponente wurde für ein paar tausend Euro von dem Kunden eingekauft, weil die Entwicklung aufgrund des Zeitdrucks zu lange gedauert hätte. Oder im Bereich ASP.NET gab es lange Zeit keine Tab - Panes die von Haus aus mitgeliefert wurden; auch diese konnte man in einer Konponenten Bibliothek mit Hinzukaufen von einem 3. Anbieter.

Du wirst lachen auch zu Hause nutze ich z.b. Redmine für meine Projekte und Git als SCM, Modellierung mit Together, Unit - Tests fallen in der Entwicklung automatisch ab; es kommt da eben ganz auf die Arbeitsweise an; ich habe es mir mal vor einiger Zeit angewöhnt und behalte es einfach bei, weil ich eben auch für zu Hause eine gewisse Qualität an Software haben will und ja du wirst lachen wenn man konstant eine Arbeitsweise beibehält, so verinnerlicht man die auch automatisch und was das Büro angeht ... mir ist das egal was meine Kunden sagen; ich arbeite IMMER so und ja ich zwinge denen auch meinen Arbeitsstil grösstenteils auf, wie z.b. das IssueTracking, weil ich einfach festgestellt habe, dass dadurch einfach praktisch Zeit gespart wird.

Ich meine wie oft passiert es, dass mal eben so zwischen Tür und Angel was entschieden wird und dann wenn man 80% fertig hat, kommt die Person dann wieder an und wirft alles wieder um, so dass die Arbeit von ein paar Stunden für den Teufel ist ... ist mir in meinen mittlerweile 15 Jahren, wo ich Software schreibe, immer wieder passiert; bis ich irgendwann wirklich einfach mal die faxen dicke hatte und ja es wirkt !!

Und Nein ich denke wirklich nicht, dass es auf die Person oben drüber ankommt, wenn man wirklich Verbesserungen reinbringen kann; dann macht man das eben für sich selber... wenn es nach der Person oben drüber geht ist idR keine Zeile dokumentiert und das Projekt ist in 10% der Zeit fertig und natürlich fehlerfrei.
 
H

Benutzer

Gast
Reliant, Du spielst D&D und Shadowrun? Cool. :smile:
C/C++ ist ein prima Einstieg, um überhaupt mal was zu entwickeln. Du wirst schon selbst merken, ab wann und für was man zusätzliche Bibliotheken braucht und an welcher Stell Du denkst "das muss auch einfacher gehen".
Aber gerade den "Kleinkram" wie Würfelergebnisse oder Erwartungswerte, oder Würfelsimulatoren etc. kannst Du damit sehr gut machen.
Was Du da lernst, nützt Dir bei jeder anderen Umgebung wieder.
Für den Karteneditor wirfst Du dann Java oder C# an, weil Du da viel leichter grafische Oberflächen erzeugen kannst.
Wenn Du ein Smartphone hast, kannst Du Dir auch mal deren Entwicklungsumgebung anschauen. Fürs Pen&Paper ist das deutlich praktischer, als eine PC-Anwendung.
(und Geld kann man dort theoretisch auch verdienen)


An die Streithammel, schleppt die unsinnige "Ich hab mehr Ahnung von Informatik und sag den anderen jetzt mal bescheid"-Diskussion doch rüber zu Heise. Hier bringt das doch nichts. Ihr habt ja nichtmal richtiges Publikum.
 

Benutzer10845  (45)

Verbringt hier viel Zeit
OT: :grin: Heise ist am Freitag dran und JAA ... mit Linux wäre DAS nicht passiert ;-)
 

Benutzer12784  (39)

Sehr bekannt hier
Reliant, Du spielst D&D und Shadowrun? Cool. :smile:

Off-Topic:
Klar, und Star Trek, Earthdawn und noch ein paar andere liegen hier auch rum. Zur zeit aber eher Brettspiele (Twilight Imperium, Rune Wars, Descent, Star Craft). Wir sind ja alle relativ verspielt hier :smile:

Und IPhone hab ich. Zum Zocken sind aber imho Tablets besser geeignet, und da kommt dann eigendlich nur ein Vollhybrid in Frage, der kein eigenes Handy-OS hat. Also zB der Archos 9 oder viel lieber der HP Slate (wenn er denn mal kommt).


@Pug1975 & Subway. Es tut mir leid, aber ich bin ein wenig ausgestiegen bei eurer Diskussion. Ich werd sie mir nochmals durchlesen wenn ich ein wenig mehr verständniss habe.
 

Benutzer54399 

Planet-Liebe Berühmtheit
@Pug1975 & Subway. Es tut mir leid, aber ich bin ein wenig ausgestiegen bei eurer Diskussion. Ich werd sie mir nochmals durchlesen wenn ich ein wenig mehr verständniss habe.

Mach dir mal den Spaß und frag in einem passenden Forum, ob du Java, C# oder C++ lernen sollst. :grin:
 
Oben
Heartbeat
Neue Beiträge
Anmelden
Registrieren