C/C++ wieder im kommen?
-
@Mechanics: C++ Code kann ich zwar ein bisschen lesen, aber können, tu ich das nicht wirklich (aber ein C mit Klassen würde ich noch hinbekommen). Ich hab im Studium C gelernt.
Jedenfalls finde ich C++ angenehmer und massentauglicher als das hier:package weektwo object ProductFunctionReturner { def main(args: Array[String]): Unit = { println(fact(5)) } def product(f: Int => Int) (a: Int, b: Int) : Int = mapReduce(f, (x, y) => x * y, 1)(a, b) def fact(n: Int): Int = product(x => x)(1, n) def mapReduce(f: Int => Int, combine: (Int, Int) => Int, zero: Int) (a: Int, b: Int) : Int = if (a > b) zero else combine(f(a), mapReduce(f, combine, zero)(a+1, b)) }
Aber vielleicht ist es wirklich so wie du sagst und man kann mit Scala auch mainstreamtauglicher programmieren. Bin noch ein Anfänger.
L. G.
Steffo
-
Mechanics schrieb:
Also das was man heute mit C# macht (ich würd übrigens sagen, das hat Delphi weggefegt, und nicht Java).
Als ich mit C# anfing (C#1.1), war Delphi eigentlich vorrangig noch zur Wartung vorhandener Software genutzt. So zumindest mein Empfinden.
Mechanics schrieb:
Die Frage, ob Java stribt, finde ich eigentlich irrelevant (wobei ich das nicht glaube). Selbst wenn, wird was ähnliches den Platz einnehmen, oder vielleicht sowas wie Scala, aber sicher nicht sowas wie C++. Die meisten Informatiker und Entwickler können kein C++ und brauchen das auch nicht. Find dich damit ab.
Da sich die meisten nicht dafür interessiere, was ich denke, sondern sich ausschließlich an meinen kontroversen Aussagen hochziehen, muss ich Dir sagen, dass ich die Zukunft von C++ ebenfalls eine Endmarke sehe. Diese liegt allerdings deutlich hinter Java.
Java stirbt, das ist ein Prozess, kein Zeitpunkt. Fortran ist auch nur noch ein Zombie, aber noch nicht ausgestorben. Relevant ist das nur für neue Projekte, die eben nicht mehr in Java beginnen oder Fortran beginnen.
Dass Entwickler kein C++ können ist eine Katastrophe - nicht wegen C++, sondern weil sie Dinge wie Templates, Mehrfachvererbung, Const-Correctness, C++-Referenzen nicht mehr denken können, also auch nicht mehr in Ihren Architekturen formulieren können.
Hier geht regelrecht kulturelles Wissen der Informatik verloren. "Java ist der Mehrfachvererbung ihr Tod."
Es geht ohne C++. Aber es ist ein architektonischer Rückschritt.Trotzdem muss etwas kommen, was die Vorteile von Java und C# mit C++ verbindet. Und ich vermute, dass das C++ zerreißen würde, weil die Hardcore-C++-Leute und Anwendungsentwickler sich gegenseitig in der gleichen Sprache aufreiben würden.
Deswegen - und nur deswegen wird C++ diese Wende nicht überleben können, sondern ebenfalls abstürzen. Den Beginn des Sterbeprozesses sehe ich aber in einem Zeitrahmen von 15-30 Jahren. Das ist zeitlich zu weit weg, als das sich da derzeit irgendwer für interessieren würde.Mechanics schrieb:
Dir kanns aber egal sein, glaub nicht, dass man in überschaubarer Zukunft Probleme haben wird, einen Job als C++ Entwickler zu finden.
Auch deswegen rate ich jedem ernsthaften Entwickler C++ zu lernen.
@Steffo: Bin auch Scala-Anfänger, und sehe die Sache der Massentauglichkeit ähnlich. Scala ist interessant, aber der Einstieg in die Programmierung sehe ich nicht im funktionalen Bereich. Also muss eine Sprache mindestens ein imperatives Eingangsportal haben oder darauf hoffen, dass fortgeschrittene Entwickler sich für alternative Ansätze interessieren. So erscheinen mir die meisten Einsteiger funktionaler Sprachen eher aus Neugier Scala oder Haskell zu lernen, nicht um Probleme zu lösen.
-
Gregor schrieb:
Mir ist nicht bekannt, dass es in dieser Hinsicht momentan irgendwo besonders starke Umbrüche gibt.
Vielleicht haben wir es einfach mit einer Art Sättigungseffekt zu tun. Programmiersprachen gibt es nun schon eine Weile, irgendwann flacht die Kurve der Enwicklung ab. Was nicht heißt, dass es nicht mal wieder Technologiesprünge geben könnte.
Gregor schrieb:
aber wenn man den Thread hier so verfolgt, dann scheint das Unternehmen, das C# so stark gepusht hat, inzwischen eine etwas andere Strategie zu verfolgen.
Am Anfang dieses Threads wurden zwei Links zu Artikel von Herb Sutter gepostet. Wenn man sich die so anschaut, wird der Strategiewechsel verständlich. Eine der Schlussfolgerungen, insbesondere des zweiten Artikels, ist ja im Prinzip, dass irgendwann in Zukunft der Punkt kommt, wo weder die Prozessoren noch viel schneller werden, noch über weitere Parallelisierung signifikante Geschwindigkeitszuwächse erreicht werden.
We’re being asked to do more (new experiences like sensor-based UIs and augmented reality) with less hardware (constrained mobile form factors and the eventual plateauing of scale-in when Moore’s Law ends).
Wenn man sich die Macher der neuen Standard C++ Webseite ansieht (MS, Intel, IBM, HP, Google, ...)
http://isocpp.org/about
sind da einige dabei, die auch mit eigenen Sprachen unterwegs sind.Aber offenbar ist man sich einig, dass es Anwendungen gibt, wo C++ die beste Wahl ist.
Man stelle sich nur Googles Brille vor, da sind die Resource wahrscheinlich so beschränkt, dass man einen viel schlankeren Ansatz als Android braucht.
Auf der anderen Seite, wenn man aus seinen Cloud Servern ein paar Prozent mehr Leistung herausquetschen kann, spart man gleich Millionen an Stromkosten.
-
Ich würde euch übrigens bitten, hier keinen Sprachenflamewar vom Zaun zu reißen. Danke
-
Es verfolgt ein anderes (funktionales) Paradigma
Bei Scala steht 'funktional' nicht im Vordergrund.
Jedenfalls finde ich C++ angenehmer und massentauglicher als das hier
Die Masse ist dumm. Ziel: Durchschnitt? Natuerlich ist map+fold (map/reduce, ... etc.) fuer die meisten gewoehnungsbeduerftig, weil sie es eben nicht gewohnt sind. Wer mal was anderes lesen moechte: Funktionale Programmierung: Sprachdesign und Programmiertechnik, dann gibt es die Video-"Vorlesung" auf Microsofts Channel 9 zu Programming in Haskell oder Pearls of Functional Algorithm Design. Der Klassiker: Structure and Interpretation of Computer Programs plus Videovorlesung vom MIT.
Trotzdem muss etwas kommen, was die Vorteile von Java und C# mit C++ verbindet.
Ich wuerde ja sagen: Lisp. Aber normalerweise ist nicht die Sprache entscheidend sondern der zugehoerige Bibliotheksumfang.
So erscheinen mir die meisten Einsteiger funktionaler Sprachen eher aus Neugier Scala oder Haskell zu lernen, nicht um Probleme zu lösen
Probleme loest man mit Mitteln und Werkzeugen, die man beherrscht. Deine Argumentation ist .. unverstaendlich.
Ich würde euch übrigens bitten, hier keinen Sprachenflamewar vom Zaun zu reißen
Tut mir leid, meine Silberkugeln sind bereits gegossen und muessen verbraucht werden.
Auch deswegen rate ich jedem ernsthaften Entwickler C++ zu lernen.
Ich rate zu Lisp. Dann gibt es auch noch ML. Haskell ist vielleicht zu "theoretisch". Forth bzw. Factor sah auch sehr interessant aus.
-
LMAO ich bin kein C++ Entwickler, sehe nicht mal sein tot.
Spielen wir Puzzelsuppe, wir schneiden unsere Meinung in Puzzelstücken und stecken sie solange zusammen, bis sie passen? Na dann mal viel Spaß.
-
knivil schrieb:
Ich rate zu Lisp.
Keine schlechte Wahl, es hat mit C++ gemeinsam, dass es keiner Firma "gehört". Was eine wichtige Eigenschaft einer neuen Mainstream Sprache sein muss. Ein Grund warum sich die großen der Branche jetzt hinter ISO C++ scharen, dürfte sein, dass sie gelernt haben, dass Eigengewächse nicht so viel Reichweite erzeugen.
ML und Haskel dürften deshalb verbrannt sein, weil F# teilweise von ML inspiriert ist und auch noch von einem Teil der ursprünglichen Haskell Entwickler, die jetzt bei MS arbeiten.
Forth ist cool, war eine der ersten Sprachen mit der ich gearbeitet habe, noch unter CP/M. Aber wie Taschenrechner von HP, ist das sicher Geschmackssache.
-
nn schrieb:
knivil schrieb:
Ich rate zu Lisp.
Keine schlechte Wahl, es hat mit C++ gemeinsam, dass es keiner Firma "gehört". Was eine wichtige Eigenschaft einer neuen Mainstream Sprache sein muss. Ein Grund warum sich die großen der Branche jetzt hinter ISO C++ scharen, dürfte sein, dass sie gelernt haben, dass Eigengewächse nicht so viel Reichweite erzeugen.
Verstehe ich nicht. Java "gehört" zum Beispiel einer Firma und ist trotzdem unglaublich erfolgreich. Auch auf lange Sicht. Guck Dir demgegenüber mal Sprachen wie D an.
Wenn ein großes Unternehmen hinter einer neuen Sprache steht, dann heißt das auch, dass jede Menge Manpower in diese Sprache gesteckt wird. Das Unternehmen hat ein Interesse am Erfolg dieser Sprache und sorgt deshalb dafür, dass eine gute Infrastruktur für diese Sprache entsteht. Dann entsteht eine gute Standardbibliothek, dann entstehen gute Entwicklungswerkzeuge und so weiter.
Ich würde sogar sagen, dass eine neue Sprache inzwischen nur noch dann eine Chance hat, wirklich relevant zu werden, wenn ein großes Unternehmen dahintersteht.
-
Hi Knivel,
Dein Posting sagt leider nicht aus, auf wessen Aussagen sich Deine Zitate beziehen. Außerdem ist es ein durchgehender Block Text, den ich nicht auseinander klamüsern will, deswegen nur ein allgemeiner Comment:
knivil schrieb:
Auch deswegen rate ich jedem ernsthaften Entwickler C++ zu lernen.
Ich rate zu Lisp. Dann gibt es auch noch ML. Haskell ist vielleicht zu "theoretisch". Forth bzw. Factor sah auch sehr interessant aus.
Hier ging es vorrangig um C++ und relativ dazu Sprachen, die in der Welt interessieren, in der mit Programmierung Geld gemacht wird: "Beruf und Ausbildung" heißt das Forum. Das ist im Ausnahmefall auch mit Lisp, ML, Haskell Forth und Factor sicher auch der Fall. Aber auch einen Diplom-Museumspädagogen findest Du vermutlich eher bei Aldi an der Kasse als in einem Museum.
Wer Scala/Lisp/... im Job braucht, lernt Scala/Lisp/... im Job. Wer Entwickler werden möchte, um in den Job zu kommen, lernt etwas, was zu (halbwegs) guten Chancen für einen Job führt, wo also entsprechend Bedarf existiert. Solche Kenntnisse werden häufig als 'Aha... machen wir hier nicht...' abgetan.
C++ habe ich bisher überall programmiert. Ich war allerdings bisher nur ein einziges Mal als C++-Entwickler eingestellt. List, ML, Haskell, Forth, Factor oder Scala habe ich noch nirgendwo gesehen und auch nie die Überlegung gehört, etwas in der Richtung einzuführen.
Wenn es darum geht Chancen auf einen Job zu haben, würde ich eher noch zu Fortran raten, das konkurriert aber auch nicht mit C++.
-
Gregor schrieb:
Verstehe ich nicht. Java "gehört" zum Beispiel einer Firma und ist trotzdem unglaublich erfolgreich. Auch auf lange Sicht.
Ja, Java ist sehr erfolgreich, ist aber auch ein Beispiel für das, was ich meine. So ein Erfolg provoziert eine Gegenbewegung, siehe .net.
Einen wirklich industrieübergreifenden Standard kann man so nicht schaffen. So was geht nur mit Dingen wie Html und XML, die man nicht gleich mit einem Firmennamen assoziert.
Schau Dir IBM und HP an, die hatten sich von C++ weitgehend verabschiedet. Jetzt kommen sie wieder ins ISO Kommitee und starten diese Foundation mit. Es ist unwahrscheinlich, dass Firmen dieser Größe in so einer Weise heute noch bei Java einsteigen würden.
Was neue Sprachen angeht, gut hinter D steht niemand großes. Das ist schon mal ein Problem. Aber selbst wenn sich einer D annehmen würde, würde wohl eher etwas passieren, wie bei Google Go. Der Rest der IT-Welt würde es mehr oder weniger ignorieren.
C++ ist gewissermaßen neutral, so dass Firmen wie Intel und ARM, oder MS und Google, gemeinsam drüber reden können, ohne dass im Hintergrund die Messer gewetzt werden.
Übrigens noch zu den Membern dieser C++ Foundation: Hinter dem Mitglied "HSA Foundation" stehen auch wieder ARM und unter anderem AMD und Samsung. Also wirklich eine beeindruckende Mitgliedsliste, dagegen wirkt Boost wie ein Kleingärtnerverein.
Schätze mal die werden in den nächsten Jahren einiges auf den Weg bringen.
-
Xin schrieb:
Wenn es darum geht Chancen auf einen Job zu haben, würde ich eher noch zu Fortran raten, das konkurriert aber auch nicht mit C++.
Fortran hat genau ein Einsatzgebiet, in dem es groß ist und auch noch lange groß sein wird. Das ist das wissenschaftliche Rechnen, vor allem auf Supercomputern. Es gibt einige Gründe, warum Fortran da groß ist:
1. Fortran ist leicht zu lernen und die Programmierer kommen nicht aus einem Informatikhintergrund. Die Einstiegshürde ist also gering.
2. Fortran hat eine große Vergangenheit in diesem Bereich. Das heißt, dass jede Menge Fortran Code in dem Zusammenhang existiert und, dass vorhandene Entwicklungen auch von Leuten mit Fortran Know-How durchgeführt werden. In dem Bereich existiert also auch eine Menge Wissen zu Fortran.
3. Fortran Compiler sind sehr gut und produzieren sehr schnellen Code. ...auch von Leuten, die nicht die allerfeinsten Sprachnuancen kennen. Letztendlich liegt das auch daran, dass die Sprache relativ unkompliziert ist. Wenn man Supercomputer nutzt, um seinen Code laufen zu lassen, dann ist es natürlich klar, dass man in jeder Hinsicht das letzte bisschen Performace herausholen möchte.
4. ...vermutlich noch ein paar weitere Gründe.
Es gibt auch eine Sprache, mit der Fortran in diesem Bereich konkurriert. Und das ist C++. Es gibt in dem Bereich eine ganz langsame Verschiebung hin zu C++.
-
nn schrieb:
Einen wirklich industrieübergreifenden Standard kann man so nicht schaffen. So was geht nur mit Dingen wie Html und XML, die man nicht gleich mit einem Firmennamen assoziert.
Schau Dir IBM und HP an, die hatten sich von C++ weitgehend verabschiedet. Jetzt kommen sie wieder ins ISO Kommitee und starten diese Foundation mit. Es ist unwahrscheinlich, dass Firmen dieser Größe in so einer Weise heute noch bei Java einsteigen würden.
Auch wenn Java einem speziellen Unternehmen "gehört", sind an der Entwicklung dieser Sprache doch eine ganze Menge Firmen beteiligt. Es gibt den Java Community Process, durch den die grundsätzlichen Entscheidungen bezüglich der Entwicklung dieser Sprache getroffen werden. Dort geht es dann um demokratische Entscheidungen. Und jetzt guck mal, wer da drin ist:
http://www.jcp.org/en/participation/committee
...jede Menge große Firmen, um es zusammenzufassen. Das geht von Twitter über Google und IBM hin zu Intel, ARM oder auch Credit Suisse oder SAP.
-
Wir arbeiten auch noch mit Fortran, allerdings gegen meinen Willen...
Gregor schrieb:
1. Fortran ist leicht zu lernen und die Programmierer kommen nicht aus einem Informatikhintergrund. Die Einstiegshürde ist also gering.
Treffer.
Gregor schrieb:
2. Fortran hat eine große Vergangenheit in diesem Bereich. Das heißt, dass jede Menge Fortran Code in dem Zusammenhang existiert und, dass vorhandene Entwicklungen auch von Leuten mit Fortran Know-How durchgeführt werden. In dem Bereich existiert also auch eine Menge Wissen zu Fortran.
Hier ist das Problem. Scala und C# zeigen allerdings, dass man Java gut ablösen kann, Anwendungen kommen und gehen, nur wenige bleiben dauerhaft.
Gregor schrieb:
3. Fortran Compiler sind sehr gut und produzieren sehr schnellen Code. ...auch von Leuten, die nicht die allerfeinsten Sprachnuancen kennen. Letztendlich liegt das auch daran, dass die Sprache relativ unkompliziert ist. Wenn man Supercomputer nutzt, um seinen Code laufen zu lassen, dann ist es natürlich klar, dass man in jeder Hinsicht das letzte bisschen Performace herausholen möchte.
Das wird durch grausame Dinge erkauft und die Parameterübergabe erfordert laufend Dereferenzierungen... will man Speed, sollte man darauf (Fortran) verzichten.
Gregor schrieb:
Es gibt auch eine Sprache, mit der Fortran in diesem Bereich konkurriert. Und das ist C++. Es gibt in dem Bereich eine ganz langsame Verschiebung hin zu C++.
2. ist das Problem... und die Leute machen ihren Job seit Jahren und haben einfach keine große Lust, sich umzuorientieren.
Diese Leute gehen aber auch gerne in Rente, es wird also ein entsprechender Bedarf an Fortranentwicklern entstehen und sei es nur, um Fortranroutinen zu portieren.Fortran hat keine Zukunft, aber eben eine bedeutende Vergangenheit.
-
Xin schrieb:
Fortran hat keine Zukunft, aber eben eine bedeutende Vergangenheit.
Wenn Du mit "keine Zukunft" meinst, dass die Einsatzgebiete von Fortran nicht mehr ausgebaut werden, dann hast Du Recht. Allerdings gibt es in diesen Einsatzgebieten auch weiterhin Neuentwicklungen mit Fortran. Die Geschwindigkeit, mit der Fortran in diesen Gebieten an Relevanz verliert, ist unglaublich langsam. In 10 Jahren wird man Fortran für diese Anwendungen immer noch fast genauso viel nutzen. Insofern hat Fortran durchaus noch eine lange Zukunft. Das ist keine Frage von 5-10 Jahren. In 30 Jahren wird das vielleicht anders aussehen. Aber in kürzeren Zeitspannen kann man da nicht denken.
-
Gregor schrieb:
Und jetzt guck mal, wer da drin ist:
http://www.jcp.org/en/participation/committeeUnd ?
Wie würde man die heute noch mal so zusammenkriegen ? Für D oder Google Go ?
Fakt ist, C++ hatte so etwas bisher nicht. Das es plötzlich dazu kommt, ist ein starkes Indiz dafür, dass sich etwas tut.
Nicht dafür das Java oder .net verschwinden. Aber offensichtlich gibt es da einen Bedarf, den diese nicht decken können.
-
Mit fold, map, filter verbinde ich ich meist Lisp bzw. Scheme.
fold -> std::accumulate
map -> std::transform
filter -> std::copy_ifHinzu kommen noch lambda-Expressions und viele andere Algorithmen, die einfach nur unterschiedliche Geschmacksrichtungen von map, filter und fold sind. Von Templates mal ganz zu schweigen.
Hier ging es vorrangig um C++ und relativ dazu Sprachen, die in der Welt interessieren, in der mit Programmierung Geld gemacht wird
Schau mal unter die Oberflaeche. Ein Stueck Fleisch ernaehrt einen, aber wenn es weder gebraten noch gewuerzt ist, schmeckt es trotzdem nicht. Wenn ich die Wahl habe, entscheide ich mich fuer Geschmack.
-
nn schrieb:
Fakt ist, C++ hatte so etwas bisher nicht. Das es plötzlich dazu kommt, ist ein starkes Indiz dafür, dass sich etwas tut.
Ok, das mag sein. Da kenne ich mich nicht aus. Ich hatte bisher das Gefühl, dass die Entwicklung bei C++ durch den sehr trägen Standardisierungsprozess relativ langsam verläuft. Es kann sein, dass sich da jetzt einiges getan hat. Ich persönlich kenne mich da aber nicht aus.
Ich denke aber, dass es durchaus auch bei Programmiersprachen, die einer Firma "gehören", zu derartigen Kollaborationen kommen kann. Java ist ein Beispiel dafür. Die Frage ist halt, inwiefern die jeweiligen Unternehmen Interesse an derartigen Kollaborationen haben. Ich kann mir derartiges auch bei neuen Entwicklungen vorstellen. Kann sein, dass es das für Google Go nicht gibt. ...aber vielleicht ist Google Go auch einfach nur eine Lösung für ein Google Problem und keine Lösung für ein Problem, das einen breiten Querschnitt der Industrie betrifft.
-
Gregor schrieb:
Ich hatte bisher das Gefühl, dass die Entwicklung bei C++ durch den sehr trägen Standardisierungsprozess relativ langsam verläuft.
Ja da scheint sich in der Tat etwas zu tun. Sutter hat in seinem Vortrag am Freitag eine Grafik gezeigt, wie sich die Teilnehmerzahl an den ISO Meetings entwickelt hat, nämlich in den letzten Monaten fast verdoppelt. Man kann jetzt mehr Arbeitsgruppen parallel arbeiten lassen.
Eine ganze Reihe von Firmen fahren neuerdings ihr Engagement im C++ Bereich hoch, in soweit ist das keine Kehrtwende bei MS, sondern die folgen lediglich einem Trend. Möglicherweise ist ja IBM in Sachen Java zu ganz ähnlichen Erkenntnissen gekommen, wie MS bei .net.
Wo das hinführen wird, kann man im Moment nicht sagen. Man spürt lediglich, dass der Wind sich dreht.
Gregor schrieb:
Ich denke aber, dass es durchaus auch bei Programmiersprachen, die einer Firma "gehören", zu derartigen Kollaborationen kommen kann.
Sicher. Aber dann muss wie bei Java der Zeitpunkt günstig sein und etwas neues geboten werden. Ich denke aber nicht, dass im Moment jemand in der Lage ist, einen C++ Nachfolger in den Markt zu drücken. Nur darauf bezog sich meine Argumentation.
-
Java ist einer der Sprachen für die neue Computer-Ära der Mobiledevices, warum sollte gerade die langsam aussterben? Das macht überhaupt keinen Sinn. Baut SAP nicht auch auf Java und diverse Großwebprojekte wie eBay?
Ich glaube einen wirklichen Untergang von C,C++,Java,Javascript und PHP werden wir nicht mehr erleben.
-
Lichtweite schrieb:
Ich glaube einen wirklichen Untergang von C,C++,Java,Javascript und PHP werden wir nicht mehr erleben.
Ehrlich gesagt bin ich aber dafür, weil diese imperativen Sprachen einfach nicht für Multicore optimiert/geeignet sind. Außerdem sind sie ziemlich verbose/gesprächig.