FB18 - Das Forum für Informatik

fb18.de / Off-Topic / Allgemeines

Zukunft im Bereich Web Developement?

Zukunft im Bereich Web Developement? 2009-12-09 12:35
7thiesse
Hallo Leute,

ich arbeite viel im Bereich Web Developement. Bisher leider immer nur mit PHP. Nun möchte ich gern meinen Horizont erweitern und richte mich daher an euch. Was meint ihr, die euch mit Serverprogrammierung auskennt, was ich mir noch aneignen sollte?

Ich hatte mit Python angefangen. Allerdings wurde mir gesagt, dass es nun nicht mehr so oft Verwendung findet. Mein nächster Wunsch wäre es Java EE zu lernen.

Bin ich komplett auf dem falschen Dampfer? Oder würdet ihr es genau so machen?

Eins noch: es ist nicht so, dass ich nicht mit PHP auskomme. Es dient wirklich erst einmal der persönlichen Entwicklung … daher sind Antworten wie "richte dich nach deinem Arbeitgeber" nicht relevant.

Vielen Dank und einen sonnigen MIttwoch noch ^^

Arthur

RE: Zukunft im Bereich Web Developement? 2009-12-09 14:32
Vollkorn
…schwierige, nicht einfach zu beantwortende Frage. Gefühlt wird .NET-Krams, insbesondere C# immer mehr fürs Web genutzt. Weiß aber nicht ob ich das so toll finde…
RubyOnRails? Ruby habe ich mir noch nie angeschaut, klingt immer nur sehr vielversprechend.

just my 2¢

RE: Zukunft im Bereich Web Developement? 2009-12-09 17:36
Ragmaanir
Ruby kann ich empfehlen (bin von C++/Java/C#/Python auf Ruby umgestiegen). Ruby hat ähnlichkeiten mit PHP (dynamisch getypt), ist aber konsequent in der Objektorientierung. Außerdem lassen sich Klassen und Methoden zur Laufzeit generieren/verändern, sogar die Standardklassen (String, Hash, Array, etc).

Damit wird zB sowas möglich:
1.day.ago # => Gibt datum von gestern 1.week.from_now #=> Heute in einer Woche 15.days 8.meters 33.euro ...
Arrays und Maps/Hashes sind in Ruby recht leicht zu verstehen:
array = ['a',3,"xyz"] array.length #=> 3 hash = {cool: 3, notcool: 4} # Ruby 1.9 hash = {:cool => 3, :notcool => 4} # Ruby 1.8 hash[:cool] # => 3
Schick finde ich vor allem auch solche sachen:
arr = [1,2,3] arr.collect{|item| item*2} # => [2,4,6] arr.select{|item| item > 2} # => [3]
Auch Reguläre Ausdrücke sind in die Sprache eingebaut.

Wenn du Ruby installierst ist normalerweise ein Programm namens 'irb' dabei. Das ist eine Konsole wie bei python, in der du rumprobieren kannst.

Java mag ich zwar nicht mehr so sehr, ist meines Wissens nach aber recht verbreitet im Web-Bereich (auch die Firma für die ich mal gearbeitet habe verwendet Java, die Konkurrenz PHP).

Das Web-Framework RubyOnRails finde ich ganz gut (Gibt auch Alternativen). Es gibt auch viele schöne Bibliotheken für Ruby (sog. "gems"): rspec ist eine schicke Spezifikations & Test - Sprache. Haml hält die Views klein (Haml macht das Tag-Gewusel in Html Dateien übersichtlicher). Webrat, factory_girl, will_paginate, rmagick, Datamapper …

RE: Zukunft im Bereich Web Developement? 2009-12-09 18:15
7thiesse
Ja auch ich höre mehr und mehr von Ruby. Wie ist es mit der Sicherheit in Ruby? In PHP z.B. gibt es ja recht viele Sicherheitslücken, die einem doch schon zu denken geben.

Wie empfindet ihr den Sicherheitsfaktor in anderen Sprachen, die man fürs Web benutzt?

@Ragmaanir:
Mich würde sehr interessieren, wieso du von C++/JAVA/C/Python auf Ruby umgestiegen bist.
Wonach wählst du deine Sprache aus? Performance? Entwicklungsgeschwindigkeit? Persönliche Vorlieben?
Es wäre super toll, wenn du, weil du ja alles mal gemacht hast, zu jeder dieser 5 Sprachen ein paar Sätze verlieren könntest. Pro und Contra.

Vielen Dank für eure Zeit.

Grüße,
Arthur

RE: Zukunft im Bereich Web Developement? 2009-12-09 18:19
Anonymer User
In der professionellen Softwareentwicklung (was immer man darunter versteht) kommt man zur Zeit nicht um Java rum (Java EE eher weniger). Interessant sind aber auch andere Sprachen die auf der JVM ablaufen wie z.B. Groovy oder Scala.
An Deiner stelle würde ich mir auf jeden Fall einen starken Kontrast zu PHP vornehmen (und Java ist so einer)…

RE: Zukunft im Bereich Web Developement? 2009-12-09 18:30
7thiesse
Okay. Vielen Dank.
Habe mir heute morgen auch schon einiges zum Lesen besorgt, was Java und Java EE angeht.
Dennoch würde ich gerne mehr Meinungen hören.

Grüße,
Arthur

RE: Zukunft im Bereich Web Developement? 2009-12-09 21:13
Wulf
Wenn es performant sein soll, nimmst du kein IIS oder Apache, sondern sowas wie lighttpd und schreibst deine Webanwendung in C. Es ist auf jeden Fall mal die Erfahrung wert :-)
Hab mal eine relativ kleine CGI-Anwendung mit mysql-backend in C gebaut, von der Geschwindigkeit her top.

Zu den anderen Sprachen: php ist Dreck. Java (gerade sowas wie Tomcat) finde ich zu unhandlich, ASP.net und so Zeug ist Windows/M$; perl find ich ganz OK, python ist sicher auch ganz nett. ruby kenn ich nicht.

Ernstgemeinter Tipp: Schreib deine Webanwendung in der Sprache, die du am liebsten magst, gehen tut es in jeder.

RE: Zukunft im Bereich Web Developement? 2009-12-10 01:42
Ragmaanir
Ja auch ich höre mehr und mehr von Ruby. Wie ist es mit der Sicherheit in Ruby? In PHP z.B. gibt es ja recht viele Sicherheitslücken, die einem doch schon zu denken geben.

Wie empfindet ihr den Sicherheitsfaktor in anderen Sprachen, die man fürs Web benutzt?
Also im Rails-Framework zB kann man recht sicher programmieren. Es gibt mehrere vorgefertigte lösungen die standardmäßig aktiviert sind (Cross Site Request Forgery Protection). SQL Injection kriegt man im prinzip automatisch dazu wenn man seine SQL Anfragen nicht selbst formuliert sondern ein ORM verwendet (ActiveRecord ist standardmäßig in Rails, man kann aber auch DataMapper oder Sequel verwenden).

Zu dem Thema gibt es extra den ROR-Security-Guide.

@Ragmaanir:
Mich würde sehr interessieren, wieso du von C++/JAVA/C/Python auf Ruby umgestiegen bist.
Wonach wählst du deine Sprache aus? Performance? Entwicklungsgeschwindigkeit? Persönliche Vorlieben?
Es wäre super toll, wenn du, weil du ja alles mal gemacht hast, zu jeder dieser 5 Sprachen ein paar Sätze verlieren könntest. Pro und Contra.

Ok.

Ich bin erst von c++ auf Java umgestiegen weil Java IMO folgende Vorteile hat:
+ Umfangreiche Standardbibliothek (die extrem leicht einzubinden ist)
+ Schnelles kompilieren
+ Einfache Stringbehandlunge
+ Reguläre Ausdrücke
+ Garbage Collection (sooooo viel weniger bugs dadurch dass man nicht mehr selber speicher reservieren und freigeben muss, außerdem weniger code)
+ GUI API recht schick (wobei es auch noch besser geht)
+ Kein scheiss wie error-return-codes oder eine globale errorvariable oder so sondern schöne exceptions
+ portabel (man muss nicht eine version für linux und eine für windows schreiben)
? geschwindigkeit: hm, weiß ich nicht genau. kommt sicher auch drauf an welche bibliotheken man verwendet. Aber ich sag mal: der umstieg von c++ auf Java hat sich gelohnt, selbst wenn java ein wenig langsamer sein sollte.
=> dadurch produktiver weil weniger problemstellen und der code ist meist viel lesbarer und übersichtlicher

C# habe ich dann benutzt (wobei ich den unterschied C# <-> Java nicht so groß fand):
+ die meisten punkte die auch bei java gelistet sind
+ properties (anstelle von dutzenden getter & setter methoden wie in Java)
+ delegates (ist umständlicher in Java)
? geschwindigkeit: wie bei Java.

Python habe ich mir angeschaut, aber nicht so viel damit gemacht.
+ die meisten punkte die auch bei java gelistet sind
+ dynamisch getypt (kein Map<String,Dingens<Blub>> x = new … sondern [1,2,4] oder dictionaries )
- nicht so objektorientiert wie ich es mir gewünscht habe(länge einer list: len([1,2,3]) )
? geschwindigkeit: keine ahnung

Ruby:
+ die meisten punkte die auch bei java gelistet sind
+ die Beispiele die ich im vorherigen post aufgeführt habe
+ schön objektorientiert:
  * hier funktioniert auch [1,2,3].length
  * Es gibt kein new-schlüsselwort sondern wenn man eine instanz einer klasse anlegen will ruft man die statische methode "new" auf (die man auch überschreiben kann): x = MyClass.new
  * viele weiterer solcher kleinigkeiten
+ sehr dynamische sprache mit der man recht leicht Domain Specific Languages entwickeln kann (wie zB rspec)
? geschwindigkeit: da Ruby und dessen VirtualMachine/Interpreter noch recht jung sind, gibt es bereiche in denen Ruby etwas langsam sein kann. Bisher habe ich davon allerdings nicht so viel gemerkt. Außerdem wird die ruby-vm verbessert und es gibt sogar die möglichkeit JRuby zu benutzen (Ruby auf einer Java VM; Da kann man in Ruby auch die Standard-Java-Klassen verwenden).

Ich habe mich also meist aus praktischen Gründen (Produktivität; sauberer, kurzer, verständlicher code) für einen Sprachwechsel entschieden. Die Performanz habe ich dabei nicht so stark beachtet. Wenn ich aber erhebliche unterschiede bei der Geschwindigkeit bemerkt hätte wäre ich eventuell wieder zurückgewechselt. D.h. die Geschwindigkeit der "besseren" Sprachen war für meine Zwecke ausreichend.

Es gibt ja meist auch die möglichkeit einen zeitkritischen Programmteil in c/c++ zu schreiben und ihn einzubinden (in ruby ist das zB relativ einfach).

RE: Zukunft im Bereich Web Developement? 2009-12-10 01:48
Anonymer User
+ Einfache Stringbehandlunge
Was hat Dich an std::string gestört?

+ Kein scheiss wie error-return-codes oder eine globale errorvariable oder so sondern schöne exceptions
C++ hat seit 11 Jahren Exceptions.

RE: Zukunft im Bereich Web Developement? 2009-12-10 02:34
Ragmaanir
+ Einfache Stringbehandlunge
Was hat Dich an std::string gestört?
Ja stimmt, std::string habe ich immer benutzt und es ist auch gut handhabbar, nur die Quellcodes von anderen waren voll von strcpy,strcmp,strcat etc. Außerdem gibt es mehrere APIs die char* zurückgeben oder erwarten (oder LPCSTR oder ähnliche ekelhafte dinge). In Java hast du dagegen einfach nur String.
Vielleicht vermische ich hier aber auch C und C++, weiß ich nicht mehr, ist schon mehr als 4 Jahre her.

+ Kein scheiss wie error-return-codes oder eine globale errorvariable oder so sondern schöne exceptions
C++ hat seit 11 Jahren Exceptions.
Jo es ist aber häufig leider gängige praxis anstelle von exceptions irgendwelche error codes zurück zu geben oder dass man sich mit getlasterror() oder so die letzte Fehlermeldung abholen muss. In Java werden afaik standarmäßig exceptions verwendet.

Da fällt mir aber noch eine Sache ein die ich bei c++ super fand und bei Java und all den anderen ein wenig vermisse:
Einen Destructor um RAII oder ähnliches zu implementieren. Allerdings gibt es in Ruby ganz schöne konstrukte mit denen man vergleichbares hinbekommt ( File.open(…) { |file| file.xyz } ). In C# gab es IIRC das using keyword dafür.

RE: Zukunft im Bereich Web Developement? 2009-12-10 05:50
anderer Anonymer Use
hmm…möchte behaupten, dass man im bereich standardsoftware/unternehmenslösungen mit client-server-architekturen um J(2)EE in nächster zukunft nicht drum rumkommt, insbesondere nachdem SAP (scheinbar) mit ihrem netweaver AS ziemlich stark drauf setzt und es sich (u.a.) dadurch sehr gut vermarkten lässt, anwendungen auf dieser basis zu verkaufen…schadet mit sicherheit auch der persönlichen entwicklung nicht, hier mal genauer nachzuschauen und evtl gefallen zu finden

auch java selbst für standalone lösungen oder als fat client (und in vorbereitung auf jee-einstieg)ist für neulinge sicherlich nicht uninteressant, dank umfangreicher bibliotheken lassen sich auch recht fix ein paar nette ergebnisse erzielen. abgesehen davon, ist das web voll mit lösungsansätzen und informationen, so dass der einstieg recht einfach ist
imho ist garbage collection halt nicht nur vorteil…(es ist einfacher, etwas selbst zu entsorgen, als jemandem zu sagen, wann er was zu entsorgen hat -.- ) und was an java/jee nervt, ist die _flut_ an frameworks, im prinzip kann man mit jedem neuen (teil)-projekt die auseinandersetzung mit den vor-/nachteilen eines neuen frameworks beginnen, so dass ich mich frage, ob das auch irgendwann mal aufhört

über ruby bisher nur positives (aus entwicklersicht) gehört, aber bin mir hier über die langlebigkeit noch nicht im klaren, selbst auch noch keine erfahrungen gemacht…

python nutz ich eigentlich nur, um auf die schnelle irgendwelche algorithmen zu testen (vermutlich ohne den vollen sprachumfang zu kennen/auszunutzen, aber erfüllt hier seinen zweck)

c-programmierung ist schon …lange her… und wende ich kaum noch an…gleiches für c++…werd ich wohl auch erst wieder reinschauen, wenn ich irgendwas sehr hardware-nahes brauch…gleiches gilt imho für c#
(wobei es sein kann, dass die hardware-nähe n vorurteil ist, ich kenn s aus der anwendung nur für chip-programmierung)

naja und dann bleiben da noch die zwölf trillionen script-/programmiersprachen/frameworks für clients/(web)gui, wobei sicher einige sind, die mal einen blick wert sind und weniger für webanwendungen, dafür wohl mehr für persönliche entwicklung so tolle sachen wie assembler oder cobol(womit sich nach einigen aussagen in den nächsten 5-10 jahren _unendlich_ viel geld machen lassen soll)

RE: Zukunft im Bereich Web Developement? 2009-12-10 13:21
Anonymer User
die Quellcodes von anderen waren voll von strcpy,strcmp,strcat etc. Außerdem gibt es mehrere APIs die char* zurückgeben oder erwarten

Jo es ist aber häufig leider gängige praxis anstelle von exceptions irgendwelche error codes zurück zu geben oder dass man sich mit getlasterror() oder so die letzte Fehlermeldung abholen muss.
Ach ja, Legacy Code… Berechtigter Einwand!

RE: Zukunft im Bereich Web Developement? 2009-12-10 20:13
DeGT
Wenn du dir mal was anderes als den ganzen Standardkram aneignen möchtest: http://ocsigen.org/
Web-Framework in OCaml. Schnell wie Hölle (relativ zu Python, Ruby etc.), funktional, statisch getypt und recht anders als PHP.

P.S.: in Python geht auch [1,2,3,4].__len__(), wenn man es unbedingt möchte.

RE: Zukunft im Bereich Web Developement? 2009-12-11 10:43
MB
Zum Thema Python und Web Development:

Ich persönlich bin ein Fan von Python und im Zusammenhang mit Web Development müsste man dann Django erwähnen. Ist sicherlich nicht der heilige Gral(aber das kann ja nichts von sich behaupten. es ist immer die eigene Vorliebe und das Anwendungsgebiet das zählt), aber es sicherlich wert es sich anzuschauen. Es gibt eine recht große Community, viele Tutorials und eigentlich ist jede Frage irgendwo schonmal aufgetaucht(fast immer bei http://stackoverflow.com/ zumindest wenn man mal die Tag-Cloud anguckt).

Mich persönlich hat Django das erste mal mit Web-Entwicklung in Kontakt gebracht und "faszinieren" können.

RE: Zukunft im Bereich Web Developement? 2009-12-11 18:05
Popcorn
Auch von mir der Tipp: Java. Die Nachfrage ist da immer noch enorm. Ansonsten habe ich bisher ebenfalls nur positives von Ruby gehört, aber immer nur von Leute die sich das halt mal so angeguckt haben und privat was damit machen. Als ich mich nach meinem Studium vor 1 1/2 Jahre nach einem Job umgeguckt habe, entdeckte ich leider nur eine Anzeige, die explizit nach Ruby fragte.

In der Überschrift fragst Du nach der Zukunft. Ich persönlich glaube, dass der stärkste prozentuale Zuwachs im professionellen Bereich bei PHP liegen wird. Auf der einen Seite fällt der Einstieg hier besonders leicht, viele junge Menschen kommen damit schon für ihre Webseiten in Berührung. Das drückt die Preise und eine Firma braucht nicht für alle Aufgabe spitzen Entwickler. Auf der anderen Seite entwickelt PHP sich doch relativ zügig immer weiter und hat da halt auch noch viel Spielraum.