Hov. Du er ikke logget ind.
DU SKAL VÆRE LOGGET IND, FOR AT INTERAGERE PÅ DENNE SIDE

Ruby on Rails, HTML5 eller dot.net ?

Side 3 ud af 3 (28 indlæg)
Fra Kgs Lyngby
Tilmeldt 7. Apr 09
Indlæg ialt: 2798
Fra  Infospray Media Skrevet kl. 17:36
Hvor mange stjerner giver du? :

Lundsby:

Du misforstår lidt mit spørgsmål, jeg er godt klar over forskellen på dynamiske sprog og statiske, det jeg spørger om er hvilket features du savner og gerne også hvorfor!

I det første eksempel er det rigtigt at man ville skulle indføre et interface for at det kan lade sig gøre i C#.

Det andet eksempel, er kan man sagtens i C#:

1 => 1
1.GetType() => Type
1.GetType().GetType() = Type

Men af begge de nævnte eksempler så er der jo næppe tale om killer-features! Så jeg savner lidt et "hvorfor"!

Samtidigt er jeg også personligt utroligt gode venner med compileren, den har hjulpet mig ud af meget skidt igennem tiderne. Faktisk er det sådan jeg i højgrad designer min kode, så compileren kan hjælpe ved vedligeholdelse.

Jeg kan sagtens forstå argumentet for funktionelle sprog, hvor immutablity giver færre muligheder for fejl og hjælp til concurrency etc. og det giver god mening af overveje dem.

Men efter hvad jeg kan se, er stortset alle de fine features i dynamiske sprog blevet optaget af C#. Samtidigt er der i høj grad lavet samme tooling, heroku for .Net kunne f.eks. AppHarbour (Som dog er i lukket beta), der er en Active-record ORMer etc.!

Når man har arbejdet med Ruby, så finder man ud af hvordan et sprog "burde" være :) og så mangler man næsten alt i C#

Mit eksempel gik ikke på om det var muligt i c#, men for at vise at alt er objekter. Det er et uhyre rent sprog. Fx. er det vi kalder operatorer og som man skal lave operator overload for at lege med såsom +, - osv. alt sammen bare metoder på en klasse i ruby. + er fx. implmenteret på Fixnum klasse fra før så den kan lægge tal sammen.

Jacob Atzens eksempel i det nedenstående viser også hvor utroligt let det er at lave en model lag i rails. Smukt og simpelt (jeg kunne blive ved, men jeg kan kun opfordre jer til selv at prøve).

Ruby blev lavet at en - på det tidspunkt - ung fyr det var træt af de "etablerede" sprog, så han lavede noget der gjorde ham glad at arbejde med. Og et af de erklærede mål for rails er "happy developers". Det er ikke ligefrem det man føler når man arbejder med c#/.net (eller SharePoint for den sags skyld som meget af min c# udvikling pt retter sig imod).

Nåh... nu skal jeg nok holde min udvikler mund, det var jo ikke rigtig det her som trådstarter var ude i :)

Fra Hellerup
Tilmeldt 11. Apr 06
Indlæg ialt: 3722
Fra  CloudSprout Skrevet kl. 17:48
Hvor mange stjerner giver du? :

Hey Jacob

Godt at høre fra dig :-)

Jeg kan godt se, at det kan være smart med Mocking og Stubbing, men jeg mener faktisk også at der er flere .Net frameworks der løser problemet. Jeg brugte typemock og den gjorde det faktisk rigtigt godt.

Det med at tilføje metoder til eksisterende klasser, kan man også i C# nu via extension methods, jeg er stor fan !!! Det foregår ikke dynamisk men på compile-time.

Som jeg ser det har .Net mfl. hugget med arme og ben fra Ruby, og det spændende er nu om der er mere at stjæle!

Meta-programmering kunne være en kandidat, uden at vide præcist hvad det er, så Googlede jeg lidt og fandt ud af man kunne lave meta-programmering med C# via et eller andet Text-Transformation tool, sikkert en inferior løsning, der kunne det godt være af værktøjsbælte i fremtiden.

Kunne du uddybe meta-programmerings fortræffeligheder ?

 

 

Fra Hellerup
Tilmeldt 11. Apr 06
Indlæg ialt: 3722
Fra  CloudSprout Skrevet kl. 18:01
Hvor mange stjerner giver du? :

Hej Rasmus

Grunden til at jeg oprindeligt sprugte ind til fordelene, var jo at jeg kunne undgå selv at lærer Ruby.
Så jeg ledte efter en klar og forståelig argumentation, for Ruby's fortræffeligheder, i forhold til den .Net verden, som jeg kender rigtigt godt. Jeg synes ikke rigtigt jeg har fået det endnu, men hintet om meta-programmering er måske noget!

Jeg kunne godt tænke mig at lærer Ruby, og iøvrigt også en masse andre sprog. Specielt F# synes jeg ser lovende ud. Personligt tror jeg hybrid sprogene er fremtiden.

Desværre er CloudSprout projektet relativt krævende, og det har vist sig at være en stor opgave at lave om på den måde der bygges sites og shops på! Så jeg for nok hverken kigget nærmere på F# eller Ruby i den nærmeste fremtid, til gengæld har jeg været tvunget til at lærer Flash-programmering og scripting af Photoshop (ikke lige nogens favoritter :-) )

 

 

Fra København N
Tilmeldt 3. Mar 08
Indlæg ialt: 1611
Fra  Amino ApS Dinero Skrevet kl. 18:32
Hvor mange stjerner giver du? :

Rasmus Lindgren:
Og et af de erklærede mål for rails er "happy developers". Det er ikke ligefrem det man føler når man arbejder med c#/.net (eller SharePoint for den sags skyld som meget af min c# udvikling pt retter sig imod).

Jeg må nu indrømme at jeg som C# udviklere er ret happy. Og jeg er tilsyneladende ikke den eneste:

http://www.version2.dk/artikel/14734-net-mere-populaert-end-ruby-on-rails

Jeg er på Facebook, Tumblr og App.net.

Fra Kgs Lyngby
Tilmeldt 7. Apr 09
Indlæg ialt: 2798
Fra  Infospray Media Skrevet kl. 19:12
Hvor mange stjerner giver du? :

Lundsby:

Som jeg ser det har .Net mfl. hugget med arme og ben fra Ruby, og det spændende er nu om der er mere at stjæle!

Meta-programmering kunne være en kandidat, uden at vide præcist hvad det er, så Googlede jeg lidt og fandt ud af man kunne lave meta-programmering med C# via et eller andet Text-Transformation tool, sikkert en inferior løsning, der kunne det godt være af værktøjsbælte i fremtiden.

Kunne du uddybe meta-programmerings fortræffeligheder ?

Ang. meta programmering så kan jeg især anbefale at kigge lidt på det dr. Nic laver:

http://drnicwilliams.com/2007/03/22/meta-magic-in-ruby-presentation/

Fra Helsingborg
Tilmeldt 3. Apr 05
Indlæg ialt: 6568
Fra  TextReactor Skrevet kl. 19:17
Hvor mange stjerner giver du? :

Jeg syntes at det er synd at tråden er kommet så meget ud af kurs :( For mig har alle sprog deres fordele og bagdele og dem der bruger enten Ruby eller .NET i deres arbejde bruger det fordi de kan det og kan li at arbejde med dem.

Jeg har programmeret i over 27 år. Jeg har kodet i C, C++, Java, Delphi, Perl, JavaScript, C#, F#, VB.NET, ASP, Myresnak :D, Comal80 osv....

Fra København
Tilmeldt 4. Mar 09
Indlæg ialt: 237
Skrevet kl. 19:26
Hvor mange stjerner giver du? :
Gennemsnit 5,0 stjerner givet af 1 person

Lundsby:

Meta-programmering kunne være en kandidat, uden at vide præcist hvad det er, så Googlede jeg lidt og fandt ud af man kunne lave meta-programmering med C# via et eller andet Text-Transformation tool, sikkert en inferior løsning, der kunne det godt være af værktøjsbælte i fremtiden.

Kunne du uddybe meta-programmerings fortræffeligheder ?

Metaprogrammering er en betegnelse for programgenererende programmer. I Ruby og Rails bliver det meget brugt til at skabe API'er, der er rare at arbejde med.

Jeg nævnte før at man i Rails kunne skrive:

class Forum < ActiveRecord::Base
  has_many :users
end

Med denne klasse definition, får Forum klassen tilføjet en række metoder. Jeg kan f.eks. skrive ting som:

forum = Forum.first
forum.users

Hvilket vil give mig listen af brugere for det første forum i min database. Bemærk, at jeg ikke har defineret metoden users selv. Jeg har kun deklareret associationen i min klasse. Rails har altså "metaprogrammeret" metoden users på Forum klassen til at finde brugerne frem for den instans af forum jeg står med.

Et andet interessant eksempel er fra et plugin til at lave state machines:

state_machine :state, :initial => :parked do
  before_transition :parked => any - :parked, :do => :put_on_seatbelt

  state :parked do
    def speed
      0
    end
  end
  
  state :idling, :first_gear do
    def speed
      10
    end
  end
end

Her bruger plugin'et blandt andet metaprogrammering til at give dette meget kortfattede API til deklaration af tilstande. Hvis vi antager, at jeg har kommet deklarationen af min state machine ind i min Car klasse, kan jeg herefter kalde metoden idling! på en ny instans af car. Dette vil være en metode frembragt af metaprogrammering. Ydermere sikrer metaprogrammeringen, at ligegyldigt hvilken tilstand jeg skifter til efter at have været parked bliver metoden put_on_seatbelt kaldt.

Men hov, jeg sagde jo før, at man kunne bytte metode definitioner ud på runtime. Og det er lige præcis det som sker med speed metoden i min state machine. Så pludselig sker følgende:

car = Car.new
car.speed => 0
car.idling!
car.speed => 10

Det vil altså sige, at jeg ved at kalde en metode på et objekt har fået omskrevet en anden af objektets metoder.

Metaprogrammering er som sådan ikke specielt for Ruby. Man kan også godt metaprogrammere i et eller andet omfang med C#. Men Ruby har nogen meget kraftfulde faciliteter til metaprogrammering og når man kobler det med Rubys dynamiske natur får man noget som er meget svært at efterligne i C#.

Fra Amager
Tilmeldt 19. Aug 08
Indlæg ialt: 16
Skrevet kl. 20:49
Hvor mange stjerner giver du? :

@ alle

 

Tak for jeres input, jeg er kun glad for at få en god debat begyndt. Jeg kommer selv fra den økonomiske verden, hvor vi har de samme problematikker og alt for sjældent har chance for at få den indre nørd frem. Så det helt i orden, at i går dybere. Det er 100% i min ånd.

Jeg har hørt på denne diskussion, mellem to personer som begge står mig nær. Jeg har ikke forstået meget af den fordi de begge har interesse i mit projekt. Ulykken bliver, at jeg måske må ud og finde en som kan overtage den ene af pladserne.

Vores projekt, som at begge blevet bedømt som meget stærk og begge er gået med mod at få en ejerandel. Noget jeg har hørt sker mere og mere sjældent. Så hvor caster jeg en, som vil gå med på samme vilkår - det bliver det næste spørgsmål.

 

Side 3 ud af 3 (28 indlæg)