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).