You can write FORTRAN in any language
27 komentarzy | Kategorie: Programowanie, Ruby, Techblog | trackbackTagi: programming ruby
For english version of this post go here: http://blog.aenima.pl/2008/4/14/you-can-write-fortran-in-any-language.
You can write FORTRAN in any language
A language that doesn’t affect the way you think about programming is not worth knowing
Możesz pisać kod C w Rubym
Car = Struct.new(:model, :color, :opt)
CAR_MODEL_BWM = 0
CAR_MODEL_AUDI = 1
CAR_OPT_GAS = 0x01
CAR_OPT_AIR_COND = 0x02
CAR_OPT_ROOF_RACK = 0x04
CAR_COLOR_BLACK = 0
CAR_COLOR_RED = 1
CAR_COLOR_GREEN = 3
CAR_COLOR_BLUE = 4
CAR_COLOR_WHITE = 5
CAR_MODEL_NAMES = [
"BMW",
"AUDI"
]
CAR_COLOR_NAMES = [
"black",
"red",
"green",
"blue",
"white"
]
def car_create(model, color, opt = 0)
car = Car.new
car.model = model
car.color = color
car.opt = opt
return car
end
def car_print(car)
printf("[Car] model: %s, color: %s\n", CAR_MODEL_NAMES[car.model], CAR_COLOR_NAMES[car.color])
printf("Options: \n")
if car_has_gas(car)
printf(" - gas\n")
end
if car_has_air_cond(car)
printf(" - air condition\n")
end
if car_has_roof_rack(car)
printf(" - roof rack\n")
end
end
def car_max_speed(car)
case car.model
when CAR_MODEL_AUDI
return 200
when CAR_MODEL_BWM
return 220
else
return -1
end
end
def car_has_gas(car)
return (car.opt & CAR_OPT_GAS) != 0
end
def car_has_air_cond(car)
return (car.opt & CAR_OPT_AIR_COND) != 0
end
def car_has_roof_rack(car)
return (car.opt & CAR_OPT_ROOF_RACK) != 0
end
car = car_create(CAR_MODEL_BWM, CAR_COLOR_BLACK, CAR_OPT_AIR_COND)
car_print(car)
Możesz pisać kod Javy w Rubym
class User
def initialize(name, age)
self.setName(name);
self.setAge(age);
end
def setName(name)
@name = name;
end
def getName()
return @name;
end
def setAge(age)
@age = age;
end
def getAge()
return @age;
end
end
class Iterator
def initialize(array)
@index = 0;
@array = array
end
def hasNext()
return @index < @array.length();
end
def getNext()
@index += 1;
return @array[@index - 1];
end
end
array = [User.new("john", 20), User.new("ala", 30), User.new("dave", 15)];
it = Iterator.new(array);
while (it.hasNext())
user = it.getNext();
puts("Name: " + user.getName() + ", Age: " + user.getAge().to_s());
end
Możesz pisać kod Perla w Rubym
while gets
chomp
next if /^#/ or /^!/
break if /quit/
if /(\d+)/
print $1
end
end
Więc jeśli chcesz programować w Rubym to naucz się dobrze tego języka. Ucz się go tak długo, aż poznasz jego styl, sposób myślenia, wszelkie niuanse. A potem pisz w nim swoje programy stosując idiomy, niepisane zasady, sposób nazewnictwa. Nie przestawaj dopóki nie będziesz wiedzieć o nim prawie wszystkiego. Wiedz dokładnie jak działa mechanizm metod prywatnych/chronionych/publicznych, sposób szukania metody, która zostanie wywołana, miksiny, include, extend, metaklasy itd... Doświadcz, że bez typowania statycznego da się żyć, że meta-programowanie to użyteczna technika (a zarazem niebezpieczna). W innym wypadku jest duża szansa, że nie piszesz w Rubym, ale jakimś innym języku, który znałeś wcześniej. Wtedy trzeba sobie zadać pytanie: to po co udawać, że się pisze w Rubym?
Jeszcze tylko brakuje:
‘Mozesz pisac kod Ruby w Rubym’
Mistrzostwo wszechświata :D
Przetłumacz to na inglisz i diggujemy/redditujemy!
Ewentualnie – mogę to przetłumaczyć i wrzucić na nasz firmowy (aenimowy) rubiowy blog anglojęzyczny, oczywiście z wyraźnym podaniem źródła i linka do oryginału? :)
@Tomash, nie ma problemu. Bierz, tłumacz i publikuj :). Jak ktoś ma jeszcze pomysły na inne języki to śmiało pisać.
Done.
Od miesięcy namawiałem chłopaków na postawienie „firmowego” bloga o Rubym i okolicach. Sam go wreszcie postawiłem (Mephisto) i muszę najwyraźniej rozkręcić, żeby szanowni coś od siebie dopisali – jeszcze dziś dodam relację z Euruko, bo tak wisi i wisi zajawka :)
W każdym razie tłumaczenie – pozwoliłem sobie trochę zaingerować w końcówkę – jest tutaj:
http://blog.gekon.aenima.pl/2008/4/14/you-can-write-fortran-in-any-language
Mam nadzieję, że „acknowledges” Cię satysfakcjonują? ;)
@Tomash, jest ok. Wersja angielska mi się bardziej podoba :).
Dzięki :D
Zawsze możesz podlinkować „english version here” ;)
Tak też zrobię :).
PS. Kurna, Radarek, czemu nie mieszkasz w Warszawie. Nam tu ogarniętych Rubiowców brakuje ;)
Dobry tekst. Tomasz ogarniętych to chyba wszędzie brakuje.
Tomash: nic prostszego, przeprowadź się do Krakowa, tutaj nas jest sporo ;-)
Ja wiem, że krakowskie środowisko programistów Ruby jest największe w Polsce – ale ciężko w Wawie pracujemy (także u podstaw – to robię u siebie na wydziale:
http://www.knf.pw.edu.pl/~trs/szkolenie/ )
żeby Was dogonić ;)
To też przerywnik jak PHP_RAILS :D ?
@JO: nie, ten wpis jest jak najbardziej serio. Wydaje się, że to taka głupota, ale ma głębsze znaczenie (taki przynajmniej był cel). Główne przesłanie „to, że używasz składni danego języka nie znaczy, że programujesz w nim”.
Nie mówie że to złe, tylko pomyśl jakby ktoś z twojego teamu nagle zaczął cisnąć w projekcie składnią Perl’a wtedy nie pomoże nawet jak Jarosław Z. mu zabroni.
Mi się podoba możliwość i tekst, tylko czasami zbyt dużo możliwosć == śmierc :D
Ale sęk w tym, że używanie danego stylu programistycznego (np. przykład z Javą) z innego języka jest złe jeśli kłóci się z ogólnie przyjętym stylem (który trochę narzuca sam język i trochę społeczność, która z czasem tworzy dany styl). Tym bardziej jeśli kod ma czytać, rozwijać ktoś inny.
Przykłady właśnie miały pokazać, że możliwość istnieje, ale nie znaczy to, że należy z nich korzystać. I nie odnosi się to tylko do Rubiego.
Masz rację, tylko że to co teraz napisałeś to taka prawda jak to że białe jest białe :) W sensie każdy normalny człowiek jest tego w 100% świadomy.
Wnioskuję więc, że spora część jest nienormalna :).
Może tam u was :D Na dalekim wschodzie, zachodzie , północy czy południu :D Bo u nas to przeważnie tacy kumaci :)
I dlatego ogólnie mówi się, że jest niedobór dobrych programistów?:)
Przyjmij moje zaproszenie na jabberze bo ci tu zasypiemy wątek śmieciami :D
Ale ja tak z boku sobie czytam ;-)
Mało zaskakujące, ale dobry tekst.
Ostatni przykład kodu kompletnie nieczytelny w porównaniu z prawdziwym Perlem :P
Radarek, wybacz zawracanie gitary po raz kolejny w tej samej sprawie, ale mam prośbę o zmianę linka na
http://blog.aenima.pl/2008/4/14/you-can-write-fortran-in-any-language
(czyli wywalenie .gekon ze ścieżki – blog się dorobił dopięcia do top-level domeny ;) )
hym stare ale jare, można pisać w wielu językach, ale bez znajomości stylu napiszemy śmiecia (eng. trash) no właśnie link z początku strony (i ostatniego posta nie działa)
Twoja notka nie tyle dobrze uzupełnia mój wpis, ale nawet lepiej wyraża to, co miałem na myśli!
Dziękuję za odwiedziny i wpadaj częściej:)! Przy okazji zasubskrybowałem Twojego bloga, gdyż naprawdę zacnie piszesz. I bardzo szybko mi ta subskrypcja wyszła na dobre — już zdążyłem z kodu strony zapożyczyć sensowny plugin wordpressowy do podświetlania składni Ruby :>.
Pozdrawiam!
PS. Jabbera masz w contact page, a najwidoczniej nie używasz :>
MyNetFaves : Public Faves Tagged Programy
Marked your site as programy at MyNetFaves!