Feststellen, ob Sprache / Framework / Technologie zukunftssicher ist

10

Ich bin ein PHP-Entwickler und habe kürzlich begonnen, mit CodeIgniter zu arbeiten. Es scheint, dass wenn ich nach etwas suche, das mit CodeIgniter zu tun hat, die Blog-Beiträge und was normalerweise nicht von '09 oder '10 sind, also dachte ich, ist CodeIgniter immer noch relevant und wird es in Zukunft sein? Gibt es einen anderen Rahmen, der seinen Platz einnimmt?

Gleiches gilt auch für andere Sprachen und Frameworks. Ab wann geben Sie das Erlernen bestimmter Sprachen oder Frameworks auf? Gibt es eine einfache Möglichkeit, diejenigen zu finden, die auftauchen und die es wert sind, aufgegriffen zu werden?

Kyle
quelle
15
Lassen Sie mich meine Kristallkugel konsultieren ...
FrustratedWithFormsDesigner
1
@MotiveKyle Eine schnelle Suche brachte mir Folgendes ... tiobe.com/index.php/content/paperinfo/tpci/index.html Ich bin mir nicht sicher, ob dies hilfreich ist, aber es ist trotzdem interessant.
Ominus
3
@MotiveKyle Ich denke, das zugrunde liegende Problem (und ich leide darunter) ist "Ist das, was ich zum Lernen ausgewählt habe, die Zeit / Mühe wert, die ich in es stecken werde?". Bei so vielen Optionen kann es überwältigend sein, herauszufinden, wie Zeit / Energie am besten für den größten Gewinn in unserer gewählten Branche investiert werden kann.
Ominus
1
Das hatte ich mir vorgestellt. Schade, dass sie keine Frameworks aufgelistet haben!
Kyle
3
COBOL ist eine der zukunftssichersten Technologien, die es gibt. Es ist äußerst unwahrscheinlich, dass die von COBOL installierte Basis verschwindet. Vielleicht möchten Sie darüber nachdenken, was das bedeutet.
user16764

Antworten:

17

Es ist keine exakte Wissenschaft, also erwarten Sie nicht, dass Sie die zukünftigen Trends in der Technologielandschaft in mehr als fünf Jahren mit Sicherheit vorhersagen können.

Aber ich würde nach allem suchen:

  • Installierte Basis - Eine größere installierte Basis bedeutet, dass viele Unternehmen weiterhin in die Technologie und deren Wartung investieren müssen, was bedeutet, dass Entwickler für die Arbeit mit der Technologie benötigt werden. Es folgt ein positiver Zyklus. Zum Beispiel wird Java, wie COBOL zuvor, nicht sehr lange verschwinden.
  • Breit angelegte Branchenunterstützung - Gibt es mehrere namhafte Branchenakteure, die diese Technologie unterstützen? Nur ein engagierter Unterstützer ist ein Warnzeichen - er kann jederzeit mit einer einzigen Änderung der Strategie fallengelassen oder außer Gefecht gesetzt werden.
  • Open Source - Wichtige Open Source-Produkte haben sich als äußerst gute Langzeitwetten erwiesen (siehe beispielsweise Linux, Apache, Red Hat, JBoss, Eclipse ...). Proprietäre Produkte hingegen sind etwas nach Lust und Laune eines einzelnen Anbieters, bei dem das Risiko besteht, dass Sie eingestellt werden / die Preise steigen / Sie versuchen, die Migration zu ihrem "nächsten großen Ding" zu erzwingen.
  • Qualität - Hochwertige Produkte werden einfach länger leben, weil die Menschen sie verwenden möchten , anstatt zu etwas anderem zu wechseln. Umgekehrt werden Produkte von geringer Qualität aufgegeben, sobald etwas Besseres eintritt.
  • Innovation - ist die Technologie auf dem neuesten Stand der Innovation? In diesem Fall wird es wahrscheinlich bei den innovativeren Unternehmen und Anwendern Akzeptanz und Unterstützung finden. Dies wird letztendlich zum Mainstream (ich würde sagen, dass neue Sprachen wie Scala und Clojure in dieser Kategorie sind).
  • Community - Gibt es eine positive, aufgeschlossene, pragmatische, engagierte und hilfreiche Community rund um die Technologie? Dies sind die Menschen, die letztendlich die Zukunft garantieren werden .....
mikera
quelle
3
Wie erklären Sie VB6? ;-)
SDG
4
Schwarze Magie.....?
Mikera
1
-1, da die meisten Punkte nicht bewiesen sind. Zum Beispiel sprechen Sie von Open Source als langfristigen Wetten. MacOS, Windows, Visual Studio und Tausende der beliebtesten Produkte sind also keine langfristigen Wetten? Innovation: Was möchten Sie hier zeigen? Alle Produkte, die wir verwenden, waren innovativ, bevor sie zum Mainstream wurden. Qualität: definieren Sie es. Die meisten populären PHP-Frameworks und -Bibliotheken sind in schrecklichem Spaghetti-Code geschrieben, aber immer noch beliebt.
Arseni Mourzenko
1
@MainMa: Da Open Source immer beliebter wird und Windows immer beliebter wird, scheint es Beweise zu geben. "Tausende der beliebtesten Produkte sind keine langfristigen Wetten" Richtig. Viele, viele Produkte werden es in fünf Jahren nicht mehr geben. "schrecklicher Spaghetti-Code, aber immer noch beliebt." Hast du die Antwort gelesen? "[bis] etwas Besseres kommt". Nichts besseres für PHP? So. Das Erbe bleibt bestehen.
S.Lott
3
Die @ SourceMa Open Source-Software garantiert Ihnen nicht, dass das Projekt nicht abgebrochen wird. Aber es garantiert Ihnen, dass Sie die Möglichkeit haben, es zu warten, wenn das ursprüngliche Team dies nicht tut. Wenn das Produkt nicht von einem großen und erfolgreichen Unternehmen entwickelt wird, besteht immer die Gefahr, dass Sie mit einem veralteten / nicht erweiterbaren Framework stecken bleiben, wenn es sich um eine geschlossene Quelle handelt.
Simon Bergot
14

Es gibt keine Möglichkeit zu wissen, ob etwas zukunftssicher sein wird, auf das ich mich lieber konzentrieren möchte. Hilft mir die Technologie, das Problem zu lösen, das ich heute habe? Sie würden das Erlernen einer bestimmten Sprache oder eines bestimmten Frameworks aufgeben, wenn dies zur Lösung Ihrer Probleme nicht mehr funktioniert.

Seien Sie in die Community involviert, die darstellt, was Sie tun, und Sie können ein gutes Gefühl dafür bekommen, was kommt und geht, aber selbst dann würde ich meine Zeit lieber mit dem besten Werkzeug für den Job verbringen, nicht mit dem, was heiß ist oder was ich für heiß halte in ein oder zwei Jahren.

Ominus
quelle
7
Da die Zukunft so schwer vorhersehbar ist, ist es schwer zu verstehen, was "zukunftssicher" überhaupt bedeuten könnte. "'Ich denke, es gibt einen Weltmarkt für ungefähr fünf Computer' - Marke, die Thomas J. Watson (Vorsitzender des Board of International Business Machines), 1943, zugeschrieben wird".
S.Lott
7

Es gibt keine Möglichkeit, definitiv festzustellen, ob etwas zukunftssicher ist. Das Beste, was Sie erreichen können, ist die Bestimmung des Aktivitätsniveaus für eine bestimmte Sprache oder ein bestimmtes Framework. Wenn viele Entwickler aktiv sind, ist dies normalerweise ein gutes Zeichen dafür, dass die Sprache / das Framework immer beliebter wird und für eine Weile lebensfähig sein wird . Die Umkehrung zeigt an, dass es weniger Aufregung gibt und dass es möglicherweise schwieriger ist, Support (über Entwicklerforen) zu erhalten.

Solange Ihre Sprache / Ihr bevorzugter Rahmen das Problem löst, das Sie lösen möchten, sollten Sie sich keine Gedanken über die Zukunftssicherheit machen müssen, es sei denn, Sie arbeiten eindeutig mit einer aussterbenden Technologie. Die Technologie ändert sich ständig - eine Sache, die Sie tun können, ist, Branchentrends zu verfolgen. Das Erlernen neuer Programmiersprachen / Frameworks, wie in diesem Thread erwähnt , kann Ihnen helfen, mit Trends Schritt zu halten, und bietet Ihnen die Möglichkeit, kontinuierlich neue Tools zu evaluieren.

JW8
quelle
5

Bei "Zukunftssicherheit" geht es sowohl um Willenskraft und Sturheit als auch um pragmatischere Anliegen.

Ein extremes Beispiel ist dies . Sparkle Filters LÄUFT NOCH einen IBM 402-Computer aus den späten 40er Jahren als Abrechnungssystem. Dies ist eine Maschine, die mit elektrischen Steckdosen anstatt mit "Dateien" programmiert wird.

Ich persönlich habe Erfahrung mit einem Unternehmen, das immer noch MS-DOS-basierte Maschinen in speziellen Instrumenten wartet, die für den Betrieb über Jahrzehnte ausgelegt sind. Ich habe sogar noch 1997 einen betriebsbereiten PDP verschrottet.

Ich würde sagen, wenn Ihr Unternehmen wie Sparkle Filters einen Besuch im Computer History Museum erhält, wäre dies ein Zeichen dafür, dass Sie (oder Ihre Vorfahren) das System erfolgreich "zukunftssicher" gemacht haben!

Angelo
quelle
Das Wort sollte wahrscheinlich "zukunftssicher" sein :)
9000
5

Ich kann antworten, ob eine bestimmte Technologie zukunftssicher ist - die Antwort lautet mit ziemlicher Sicherheit nein, da Sie keine Zeitskala dafür festgelegt haben.

Um diese Frage beantwortbar zu machen, müssen Sie den Anforderungen weitere Details hinzufügen. Beispielsweise:

  • Über welchen Zeitraum sprechen wir - 1 Jahr, 3 Jahre, 5+ Jahre?
  • Was würde es kosten, etwas auszuwählen, das es in 5 Jahren nicht mehr gibt?
  • Welche Vorteile ergeben sich aus der Wahl einer weniger "sicheren" Option, und überwiegen die Vorteile die Risiken?

Die Wahl einer Sprache / eines Frameworks / einer Technologie ist wirklich ein Teil des Risikomanagements im Projekt. Wie bei allen Risiken müssen Sie eine Reihe von Faktoren berücksichtigen (ich versuche, dies kurz zu halten) und dann Schritte unternehmen, um es auf ein der jeweiligen Situation angemessenes Maß zu reduzieren.

Wie bei den meisten Dingen im Leben ist die Aktivität mit dem geringsten Risiko möglicherweise nicht die beste Wahl.

Kurz gesagt, mit wie viel Unsicherheit sind Sie bereit zu leben, verglichen mit den Vorteilen, die Sie aus der Nutzung über die erwartete Laufzeit des Projekts ziehen werden.

Je länger Sie in die Zukunft blicken möchten, desto weniger Sicherheit wird es geben. Wenn Sie sich zum Beispiel nur um die nächsten 2 Jahre sorgen möchten, ist Ihre Wahl viel einfacher zu treffen (und Ihnen stehen weit mehr Optionen offen), als etwas auszuwählen, das für die nächsten 10 Jahre verfügbar sein muss.

Sam Elstob
quelle
3

Es gibt so viele Faktoren, dass ich sagen würde, dass es unmöglich ist. Unter den Dingen, die schief gehen könnten, sind:

  • Mode. Die Leute verlieren das Interesse und lenken dort die Aufmerksamkeit auf eine neue schönere Plattform. Perl hatte um das Jahr 2000 ein Monopol für Webanwendungen. Es wird derzeit kaum erwähnt.
  • Marktanteil der Anbieter. circa 2000 hätten Sie gedacht, obwohl C ++ / Sun Solaris bis zum Jahr 3000 gut war.
  • Unternehmen Shenanigans. Vor ein paar Jahren hätte ich Java als zukunftssichere Plattform gewählt. Mit ORACLE, das die API usw. urheberrechtlich schützt, wird sich wahrscheinlich ein Wechsel zu einem anderen Sprachrahmen ergeben. Ich wünschte nur, ich wüsste, welcher.
  • Ende der Straße. Ich denke an Dinge wie Visual Basic, die nach einer langen und ehrenwerten Geschichte einfach nicht mehr gedehnt werden können, um den neuesten Überlegungen in der Softwareentwicklung Rechnung zu tragen.
  • Der Verlierer gewinnt. PHP (was mir gefällt) würde und hat noch nie einen Schönheitswettbewerb unter Entwicklern gewonnen, aber es hat sich als unbestrittener König des Webs herausgestellt. Als ich 2004 zum ersten Mal PHP schrieb, hätte ich es nie als Verkehrssprache der Webentwicklung unterstützt.
  • Die hässlichen Entenküken. Javascript, ohne eine einzelne Syntax zu ändern oder eine einzelne API hinzuzufügen, ging plötzlich von einer hokey-Skriptsprache aus, die animierte nervige Banner zum Kernstück von WEB 2.0 hinzufügte.

Am Ende ist es nicht so wichtig. CodeIgniter arbeitet für Sie und liefert, was Sie wollen. Nichts, was Sie tun, funktioniert nicht mehr, weil die Blog-Beiträge alt sind oder sich die Veröffentlichungsrate verlangsamt hat. Mein Rat wäre also, das zu nutzen, was jetzt funktioniert, und mit der Zukunft umzugehen, wenn es darum geht.

James Anderson
quelle
2

Ein PHP-Framework, Symfony, erklärte dies an ihrem Standort perfekt .

10 Kriterien für die Auswahl des richtigen Frameworks

Du machst Fortschritte und das ist gut so! Sie wissen bereits, dass Sie ein Framework verwenden werden, um Ihre Site oder Ihre Anwendung zu entwickeln. Aber welcher? Hier ist eine Checkliste, mit der Sie Fehler vermeiden können:

1. Beliebtheit und Community-Größe

Je bekannter und anerkannter das Framework ist, desto mehr wird es „lebendig“, weiterentwickelt und vollständig sein: neue Ideen, Anzahl und Qualität der Plug-Ins usw.

2. Philosophie

Dies ist das Wesentliche des Frameworks: Es ist ein grundlegendes Kriterium, um sicherzustellen, dass es Ihren Anforderungen entspricht. Ein Tool, das von Fachleuten für ihre eigenen Bedürfnisse entwickelt wurde, wird offensichtlich die Anforderungen anderer Fachleute erfüllen.

3. Nachhaltigkeit

Stellen Sie vor der Auswahl eines Frameworks sicher, dass es für die Dauer mit Ihnen Schritt halten kann. Dies vereinfacht sowohl die Wartung als auch das Upgrade Ihrer Anwendungen.

4. Unterstützung

Ein weiteres Kriterium, das nicht übersehen werden sollte, ist die Leichtigkeit, Antworten auf Ihre Fragen zu finden und Hilfe zu erhalten. Identifizieren Sie den verfügbaren Support: vom Herausgeber. Aus einer Community (Mailinglisten, IRC usw.)? Von Dienstleistungsunternehmen (Entwicklung, Support, Schulung)?

5. Technik

Um nicht in einem Labyrinth gefangen zu sein, ist es immer vorzuziehen, eine interoperable Lösung zu wählen. eine, die Best Practices in Bezug auf Entwicklung respektiert (Entwurfsmuster)

6. Sicherheit

Jede Anwendung ist potenziell anfällig. Um das Risiko zu minimieren, ist es immer besser, ein Framework auszuwählen, das Sicherheitsfunktionen gewährleisten kann (z. B. XSS-Management).

7.Dokumentation

Es ist unbedingt erforderlich, Art, Umfang und Qualität der vorhandenen Literatur zu einem Framework zu bewerten: Ein gut dokumentiertes Tool ist sowohl einfacher zu verwenden als auch besser aktualisierbar.

8. Lizenz

Lizenzen sind einfach deshalb wichtig, weil sie erhebliche Auswirkungen auf Ihre Anwendungen haben können. Beispielsweise unterliegt eine Anwendung, die unter Verwendung eines GPL-lizenzierten Frameworks entwickelt wurde, notwendigerweise der GPL. Dies ist jedoch bei einem MIT-lizenzierten Framework nicht der Fall.

9. Verfügbarkeit von Ressourcen auf dem Markt

Vielleicht möchten Sie ein technisches Team, das Sie während der Entwicklungsphase oder längerfristig umgibt, sowohl für Wartungs- als auch für Upgrades. Mit anderen Worten, stellen Sie sicher, dass die für das von Ihnen verwendete Tool erforderlichen Fähigkeiten auf dem freien Markt verfügbar sind.

10. Probieren Sie es aus!

Das ist der Schlüssel! Geben Sie sich nicht damit zufrieden, gute oder schlechte Bewertungen, Kommentare und Gerüchte im Internet zu lesen. Wenn Sie es testen, können Sie sich selbst ein Bild machen und sicherstellen, dass Sie mit dem Tool vollständig vertraut sind.

Hakan Deryal
quelle
1

Der Schlüssel ist Geduld. Geduld, Geduld, Geduld. Es gibt keine Möglichkeit, die Zukunft vorherzusagen. (Musste ich das überhaupt schreiben?) Aber wenn Sie der neuen Technologie ein paar Jahre Zeit geben und beobachten, wie sie übernommen wird, haben Sie eine gute Vorstellung davon, ob sie Wurzeln schlagen wird oder nicht und für langfristige Projekte / Zeitinvestitionen geeignet ist .

Wenn also das NextNewThing (tm) auf den Markt kommt, können Sie gerne auf den Zug springen ... nur für nichts Wichtiges in den ersten Jahren.

GroßmeisterB
quelle
0

Mikeras Antwort ist ziemlich nett. Ich werde hinzufügen, dass Zukunftssicherheit wirklich eine Art Sicherheits- oder Risikomanagement ist. Oft müssen Sie jetzt auf bestimmte Annehmlichkeiten und Kosten- / Produktivitätsvorteile verzichten , um später Probleme zu vermeiden . Ich mache jetzt schon eine ganze Weile fast zukunftssichere Technologie. Es gibt bestimmte Muster, die helfen können. Hier sind einige.

  1. Daten sollten in einem offenen Format gespeichert werden, das später leicht extrahiert oder transformiert werden kann. Ungerade Dateiformate sind im Allgemeinen ein großer Lockin-Technik- und Trap-Bereich. Bevorzugen Sie auch einfachere Ansätze wie CSV, ASN.1 oder JSON gegenüber kompliziertem Mist wie XML oder beispielsweise dem Word 97-Format;). Die Idee ist, dass es einfach genug ist, einen Parser selbst zusammenzustellen, und der Parser auf niedriger Ebene für alle Apps wiederverwendbar ist.

  2. Anwendungen sollten im Idealfall haben hersteller- und technikneutrale Schnittstellen in ihnen gebaut, sowie eine genaue Beschreibung , was sie tun. Sie sollten Dinge entwerfen, bei denen Sie die Implementierung ändern oder wegwerfen können, ohne etwas zu beschädigen. Der Wechsel zu einer neuen Plattform ist auch dann einfach, wenn Ihre Methode zum Aufrufen von Prozeduren oder zum Verarbeiten von Daten plattformübergreifend funktioniert. So sind die Schnittstellen die meisten wichtige Sache richtig zu bekommen. Je einfacher, schneller und offener die Schnittstellenimplementierungsmethode ist, desto besser.

  3. Der Stack sollte vollständig Open Source sein und frei geändert werden können. GPL-, LGPL-, BSD-, MIT- usw. Lizenzen sind in diesem Winkel in Ordnung. Die Idee ist, dass der Stack möglicherweise auf eine neue [Hardware / OS / Protokoll / etc] verschoben werden muss, wenn die Community nachlässt. Und dafür brauchen Sie den Code.

  4. Das Design des Stapels sollte äußerst modular sein, wobei jedes Stück für eine Person verständlich sein sollte. Dies erleichtert einer neuen Gruppe das Aufnehmen und Verwalten. Selbst wenn die niedrigsten Ebenen der Laufzeit, Bibliotheken und Compiler gut herausgerechnet werden, kann sich dies enorm auszahlen, wenn sie portiert werden müssen. Oft kann nur ein Teil portiert werden und Ihr alter Code funktioniert.

  5. Ihre App sollte modular aufgebaut sein und Plattformdetails berücksichtigen, um Nacharbeiten in diesem Bereich zu minimieren. Es hilft, Funktionen nach Möglichkeit auch in Eingabe- / Verarbeitungs- / Ausgabeblöcke zu strukturieren. Dies kann eine Analyse der Auswirkungen eines Ports unterstützen (und eine Korrektheitsanalyse im Allgemeinen nach der Reinraummethode). Die Plattform mit dem geringsten Risiko besteht darin, Funktionen mit dem kleinsten gemeinsamen Nenner zu verwenden, die universell mit einer einzigen Schnittstelle unterstützt werden, über die Sie sie verwenden können, wodurch die Portierung weiter reduziert wird. (Ich sagte, du würdest etwas verlieren ...)

  6. Dynamische Typisierung, Typinferenz oder andere flexible Tippansätze helfen. Ein Port auf eine neue Plattform kann die Definitionen der Basistypen ändern. Sprachen, die intern stark tippen, bedeuten, dass Sie sich mit diesem Zeug weniger Sorgen machen.

  7. Halten Sie das Parallelitätsmodell einfach. Ereignisgesteuerte Nachrichtenübermittlung über klare Schnittstellen ist für ... im Grunde alles portierbar. Es gibt auch Coroutinen. Sie möchten nur Routen vermeiden, die sowohl für Fehler als auch für Portabilitätsprobleme anfällig sind.

  8. Schauen Sie sich die tragbaren Laufzeiten von Mozilla und Apache an. Sie berücksichtigen viele plattformspezifische Probleme bei bestimmten Schnittstellen- und Implementierungsoptionen. Sie können Ihnen Hinweise geben, worüber Sie sich Sorgen machen müssen, und Ihnen gute Lösungen für viele Probleme bieten.

Perfektes Beispiel: Tcl. Ich weiß, viele Leute hassen es und ich benutze es selten selbst. Tcl ist jedoch eine extrem einfach zu verstehende, zu implementierende Sprache (12 Hauptregeln) und Code-In. Es ist klein, schnell genug, lässt sich in Webserver integrieren, ist in native Apps eingebettet, wurde auf jede Menge Dinge portiert und verfügt über bestimmte Sicherheitsfunktionen und wurde seit den 80er Jahren, als es gemacht wurde, regelmäßig aktualisiert. Sie oder ich könnten in kürzester Zeit eine ganze TCL-Laufzeit für die Kernsprache implementieren. Wenn wir die Standardbibliothek portieren müssten, wäre dies einfacher als das Portieren von .NET oder Java. Und dafür ist eine Menge nützlicher Code geschrieben. Und es wurde bereits in der Web-Technologie als "Mobile Agent" -Wahnsinn eingesetzt, auf den auch Java-Applets abzielten. Zum Beispiel geht das OpenACS-Webframework auf das Jahr 1998 mit einem älteren Server zurück.

Andere Beispiele: BASIC, COBOL und LISP (Schema oder CL). Diese Sprachen gehen alle auf die 50er oder 60er Jahre zurück. Sie sind einfach genug, um das Verständnis, die Implementierung und die mechanische Übersetzung zu erleichtern. Sie können jedoch nützliche Dinge mit ihnen erstellen. COBOL unterstützt immer noch den größten Teil der weltweiten Transaktionsverarbeitung, wurde einige Male aktualisiert und läuft sogar unter .NET. Alte QBasic / QuickBASIC-Apps werden noch heute mit offenen / kostenlosen Tools auf modernen Plattformen ausgeführt und bieten Portierungsmöglichkeiten für bessere Tools wie GAMBAS oder RealBASIC. LISP-Codierer machen ihre Systeme natürlich modular und funktional, was die Portierung erleichtert. Es gab über Jahrzehnte einen stetigen Strom von Implementierungen, offen und kommerziell.

Schnittstellen, Offenheit, Einfachheit, Modularität und plattformneutrale Architektur / Design / Codierung. Damit erhalten Sie die Zukunftssicherheit, die Sie benötigen. Jedenfalls die meiste Zeit.

Nick P.
quelle