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?
Antworten:
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:
quelle
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.
quelle
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.
quelle
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!
quelle
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:
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.
quelle
Es gibt so viele Faktoren, dass ich sagen würde, dass es unmöglich ist. Unter den Dingen, die schief gehen könnten, sind:
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.
quelle
Ein PHP-Framework, Symfony, erklärte dies an ihrem Standort perfekt .
quelle
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.
quelle
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.
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.
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.
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.
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.
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 ...)
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.
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.
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.
quelle