Welche Sprachfunktionen von Ruby würden Sie im Vergleich zu C # hervorheben?

7

Ich gebe eine Reihe von Vorträgen an ein .NET (C #) - Entwicklungsteam für die Sprache und Umgebung von Ruby. Ich nähere mich ihm als eine Gelegenheit, die Vorteile von Ruby über C # hervorzuheben. Zuerst möchte ich mich auf die Sprache selbst konzentrieren, bevor ich in die Umgebung gehe (RoR vs ASP MVC, etc). Welche Eigenschaften der Ruby-Sprache würden Sie abdecken?

    
jsmorris 23.02.2009, 21:31
quelle

5 Antworten

11

Ich habe vor einiger Zeit vor einer .NET-Benutzergruppe über IronRuby gesprochen und ähnliche Probleme gesehen. Die Dinge, auf die ich mich konzentrierte, waren:

  • Ente tippen. Es gibt nichts dümmer als List<string> stringList = new List<string>() ;

  • Expressive und prägnante Syntax. Einfache Dinge wie das Weglassen von Klammern, Array- und Hash-Literalen usw. (in Kombination mit Duck-Typing erhalten Sie string_list = [] , was offensichtlich netter ist). Alle kleinen Dinge, die sich summieren.

  • Metaprogrammierung. Beginne mit einfachen Dingen wie attr_accessor , dann vielleicht etwas fortgeschrittener, wenn sie nicht sofort die Vorteile sehen. Versuchen Sie nicht, Dinge zu vergleichen, um zu lispeln und über Programme zu schreiben, die andere Programme schreiben ... die Leute werden einfach denken, dass Sie etwas rauchen. Bleiben Sie einfach und hämmern Sie den Punkt, dass Sie nicht mehr den gleichen beschissenen Standardcode schreiben müssen

  • Als ein gutes "Finale" zeige ihnen einige normale NUnit-Style-Tests mit all dem Durcheinander von Assert.NotEqual<string> blah , die sie normalerweise haben, dann sag "hier ist der gleiche Code in Ruby geschrieben" und zeige sie mit rspec (es wird die halbe Länge und 10 mal einfacher zu lesen sein ... wenn das sie nicht verkauft, wird nichts).

Orion Edwards 23.02.2009 22:17
quelle
5

Duck Typing! Dies wird in c # 4.0 weniger ein Problem sein, aber es gab Zeiten, in denen ich ganze Codeblöcke duplizieren musste, weil zwei verwandte Klassen mit (für meine Zwecke) identischen APIs keine Basisklasse gemeinsam hatten.

Auch Blöcke. C # hat Lambdas, aber Rubys Syntax ist hübscher und sie werden überall in den Standardbibliotheken verwendet. Sie sind viel mehr ein Teil der idiomatischen Ruby als idiomatische c #, und das zählt für etwas.

Bearbeiten
Hashliterale verdienen ebenfalls eine Erwähnung. Im Allgemeinen würde ich betonen, wie prägnant Sie in Ruby sein können, und wie Sie dadurch Ihre Absicht besser ausdrücken können und weniger Zeit damit verbringen, den Compiler glücklich zu machen.

    
Gabe Moothart 23.02.2009 22:06
quelle
5
  

Ich nähere mich ihm als eine Gelegenheit, um die Vorteile von Ruby gegenüber C # hervorzuheben.

Ich bin mir nicht sicher, ob das richtig ist. Wenn der Ton deiner Vorträge lautet: "Ruby ist cool, weil du x darin machen kannst!" Sie werden Ihr C # -Publikum sehr schnell verlieren. Sie werden antworten: "Wir können x in C # simulieren, wenn wir das wollen, aber wir haben in unseren Entwürfen wenig Nutzen für x ." oder vielleicht: "Wenn du denkst, dass du x tun musst, dann machst du es falsch!"

Sie werden nicht verstehen, wie Ruby ihnen helfen kann, bis sie Ruby verstehen. Warum nicht sie durch einige Spielzeugprobleme führen und ihnen zeigen, wie ein Ruby-Programmierer sie lösen würde? Bringen Sie ihnen den Ruby Weg. Eine Woche später, wenn sie ein Problem betrachten, das sie haben, wird einer von ihnen sagen: "Gut, ich weiß, wie ich das lösen kann, aber wenn ich Ruby benutzen würde, wäre es viel einfacher ... . "

    
Pitarou 23.02.2009 22:27
quelle
1

Mix-Ins und Mehrfachvererbung.

Es ist gefährlich in den falschen Händen, aber recht nützlich für die richtige Verkapselung von Dingen, im Gegensatz dazu, dass man viele Dinge erben muss, die man nicht unbedingt braucht.

    
DevelopingChris 23.02.2009 21:44
quelle
1

Zusätzlich zu dem, was alle anderen gesagt haben, ist Offene Klassen ein wichtiges Feature von Ruby, das erwähnenswert ist: ( Beispiel von Ruby aus anderen Sprachen )

%Vor%

Ich weiß, Flicken wie ein Affe sollte vermieden werden , aber ich denke, dies hervorzuheben Neueinsteiger sollten ihnen eine Idee über die Philosophie von Ruby geben. Denken Sie daran zu sagen: " Kinder, versuch das nicht zu Hause! "

    
Yaser Sulaiman 24.02.2009 15:14
quelle

Tags und Links