Maciej Sikora

Maciej Sikora Programista
aplikacji
internetowych

Temat: Coffe script

Witam,
co myślicie o tym wynalazku? Ja po przejrzeniu przykładów nie jestem przekonany. W js-ie brakuje mi kilku rzeczy, ale nie widzę sensu kompilowania do js, wydaje mi się, ze to tylko może wydłużyć czas produkcji. Jakie macie opinie?

konto usunięte

Temat: Coffe script

Założeniem coffe script jest skrócenie czasu produkcji. Musiał bym się przekonać tylko jak to coś radzi sobie z IE. Wygląda fajnie. Ale nie miałem czasu się porządnie przyjrzeć.

Fakt faktem mało kto używa coffe script w firmach a bez tego nie ma sensu się tym zajmować. Głównie dlatego że ciężko by było użyć takie narzędzie tylko po to by inny programista JS który go nie zna coś później spieprzył albo przeklinał na Ciebie pół dnia że się musi uczyć tego.

Ktoś kto używa może wskazać jakieś realne korzyści cs ?

konto usunięte

Temat: Coffe script

1) CoffeeScript*

2) "Musiał bym się przekonać tylko jak to coś radzi sobie z IE." => "CoffeeScript is a little language that compiles into JavaScript."

3) Składnia w stylu Rubego/Pythona nie każdemu podchodzi. Dla jednych zwiększa czytelność i przyśpiesza produkcję, innym przeszkadza, w tym mi.

4) Temat przewijał się wielokrotnie, np. :
http://net.tutsplus.com/articles/interviews/should-you...
http://ryanflorence.com/2011/2012/case-against-coffees...

5) CoffeeScript nie jest jedyny:
https://github.com/jashkenas/coffee-script/wiki/List-of...

konto usunięte

Temat: Coffe script

Kamil Brenk:
1) CoffeeScript*

Fakt.

2) "Musiał bym się przekonać tylko jak to coś radzi sobie z IE." => "CoffeeScript is a little language that compiles into JavaScript."

Nadal pytanie czy wspiera IE bez problemu. Zawsze to jakiś atut.

3) Składnia w stylu Rubego/Pythona nie każdemu podchodzi. Dla jednych zwiększa czytelność i przyśpiesza produkcję, innym przeszkadza, w tym mi.

4) Temat przewijał się wielokrotnie, np. :
http://net.tutsplus.com/articles/interviews/should-you...
http://ryanflorence.com/2011/2012/case-against-coffees...

5) CoffeeScript nie jest jedyny:
https://github.com/jashkenas/coffee-script/wiki/List-of...

konto usunięte

Temat: Coffe script

Dariusz Półtorak:
2) "Musiał bym się przekonać tylko jak to coś radzi sobie z IE." => "CoffeeScript is a little language that compiles into JavaScript."

Nadal pytanie czy wspiera IE bez problemu. Zawsze to jakiś atut.
JavaScript działa w IE :) z tego co na szybko wyczytałem to wygenerowany kod ma polyfilfs pod IE dla nieobsługiwanych metod/właściwości (ale na wsparcie document.all[] nie ma co liczyć :p)

konto usunięte

Temat: Coffe script

I o to mi chodziło. Ale po zapoznaniu się z paroma artykułami dałem sobie jednak siana. Najciekawszy argument jest odnośnie debugowania który właściwie zabił dla mnie cały projekt. W wypadku błędu korzystając z CoffeScript:

1. Najpierw zlokalizuj problem w kodzie Javascript z uwagi na to że CS nie kompiluje się linia do linii.
2. Później musisz zorientować się co i jak bo ów "skompilowany kod" nie jest Twoim kodem.
3. Jak zorientujesz się co jak działa pasuje zlokalizować problem.
4. Teraz musisz zlokalizować co zostało w CoffeScript skompilowane do kodu który właśnie analizowałeś.
5. Popraw błąd w kodzie CoffeScript.
6. Skompiluj.
7. Problem rozwiązany. Jeżeli nie to:
- sprawdź czy proces kompilacji przebiegł pomyślnie
- wróć do punktu pierwszego i zacznij od początku

W wypadku pisania w JS:
1. Zlokalizuj błąd w Javascript który napisałeś i który znasz
2. Napraw ów błąd
3. Problem rozwiązany. Jeżeli nie to:
- wróć do punktu pierwszego

konto usunięte

Temat: Coffe script

Przyszlosc Coffee Script zalezy od Railsow, w wersji 3.1 jest ustawiony domyslnie.

Pewnie jak sie tam przyjmie - to szanse na rozwoj sa.
Maciej Sikora

Maciej Sikora Programista
aplikacji
internetowych

Temat: Coffe script

Może się przyjąć szerzej tylko jeśli będzie automatyczna kompilacja do js-a bez komend. Coś jak nodemon dla node.js. Chyba, że to już jest?

konto usunięte

Temat: Coffe script

Maciej Sikora:
Może się przyjąć szerzej tylko jeśli będzie automatyczna kompilacja do js-a bez komend. Coś jak nodemon dla node.js. Chyba, że to już jest?

A co za problem zrobic helper, ktory sprawdza czy plik sie nie zmienil, jesli tak kompiluje go ? ;)
Szymon Piłkowski

Szymon Piłkowski Senior JavaScript
Developer

Temat: Coffe script

a po co?
coffee --watch --compile plik.coffee ;)
Maciej Sikora

Maciej Sikora Programista
aplikacji
internetowych

Temat: Coffe script

I o to się pytałem. Ok czyli to by dało radę, problem zostaje tylko z debugowaniem błędów, w przeglądarce widzimy skompilowany js, więc szukamy po omacku w coffe... średnio to widzę.
Szymon Piłkowski

Szymon Piłkowski Senior JavaScript
Developer

Temat: Coffe script

to też niebawem przestanie być problemem: http://www.infoq.com/news/2011/08/debug-languages-on-j...

konto usunięte

Temat: Coffe script

Jako osoba ktora sie juz troche CoffeScriptu napisala moge napisac co nieco. A wiec w punktach

- duzo mniej pisania $(document).ready == $->, czasem z przejrzystoscia jest "inaczej" ale jest to kwestia przyzwyczajenia
- standardyzuje zapis obiektowy, prototype, this wydaja sie byc troche niepotrzebna juz przeszloscia, dla mnie jest jeden z wiekszych plusow, bo wreszcie rozni programisci beda pisac OOP w JSie tak samo, bo jak wiadomo mozna to robic na rozne sposoby
- naprawia czesc problemow javascriptu - np kwestie bindowania this-a w eventach
- lata braki - ddodajac np forEach, ulatwia uzywanie wyrazen regularnych itp
- wreszcie nie trzeba laczyc stringow za pomoca miliona plusow
- temat debugowania jest dlugi i nie chce mi sie klocic - generalnie dla mnie jest to bzdura. Generowany kod jest bardzo przejrzysty i jesli nie korzystamy z kompresji :D to odnalezienie odpowiadajacych sobie fragmentow Coffee i zwyklego JSa jest bardzo proste. CS to rozwiazanie stosunkowo nowe i napewno pojawia sie dodatkowe narzedzia do tego :)
- jak wspomnialem generuje bardzo ladny kod, i nie generujac 10k linii jak Google Dart, istnieja juz fajne aplikacje wspierajace kompilacje i ladnie pokazujace bledy np CodeKit http://incident57.com/codekit/

W projekcie na ktorym w sumie wciaz troche eksperymentuje mam 41 klas i nie wyobrazam sobie pisania tego w JSie. Piszac w nim na powrot czuje delikatnie mowiac malo produktywny. Na koniec maly prosty przyklad bez dziedziczenia i innych gadzetow :)
CS

class Element
x:0
y:0
css_class:"element"
inside_html:"e"

constructor: (@x,@y) ->
@id=Math.random().toString(36).substring(2);
@build()

build: () ->
html="<div id='#{@id}' class='tile element #{@css_class}' style='top:#{@y}px;left:#{@x}px;'>#{@inside_html}</div>"
$(document.body).prepend html
@el=$('#'+@id)

html: (html) ->
@el.html html

toggle_class: (css_class) ->
@el.toggleClass(css_class)

refresh:() ->

get_coordinates:->
{x:@x,y:@y}

JS

Element = (function() {

Element.prototype.x = 0;

Element.prototype.y = 0;

Element.prototype.css_class = "element";

Element.prototype.inside_html = "e";

function Element(x, y) {
this.x = x;
this.y = y;
this.id = Math.random().toString(36).substring(2);
this.build();
}

Element.prototype.build = function() {
var html;
html = "<div id='" + this.id + "' class='tile element " + this.css_class + "' style='top:" + this.y + "px;left:" + this.x + "px;'>" + this.inside_html + "</div>";
$(document.body).prepend(html);
return this.el = $('#' + this.id);
};

Element.prototype.html = function(html) {
return this.el.html(html);
};

Element.prototype.toggle_class = function(css_class) {
return this.el.toggleClass(css_class);
};

Element.prototype.refresh = function() {};

Element.prototype.get_coordinates = function() {
return {
x: this.x,
y: this.y
};
};

return Element;

})();
Paweł Krefta edytował(a) ten post dnia 20.12.11 o godzinie 16:55
Szymon Piłkowski

Szymon Piłkowski Senior JavaScript
Developer

Temat: Coffe script

Paweł Krefta:
- standardyzuje zapis obiektowy, prototype, this wydaja sie byc troche niepotrzebna juz przeszloscia, dla mnie jest jeden z wiekszych plusow, bo wreszcie rozni programisci beda pisac OOP w JSie tak samo, bo jak wiadomo mozna to robic na rozne sposoby

z tym się w 100% nie zgadzam. prototype i this to jedne z ważniejszych składników JS (choć z this jest masa problemów, wiem), i jeśli prototype staje się "niepotrzebne", to piszemy już w innym języku; JS jest - jak dla mnie - głównie językiem funkcyjnym, w którym powinno się raczej (jak wszędzie zresztą, ale w JS jest to łatwe) używać kompozycji i kontroli zasięgu zmiennych zamiast dziedziczenia. w połączeniu z tym, łańcuch prototypów ma większe możliwości i jest bardziej elastyczny niż tradycyjna, klasowa obiektowość - inna rzecz, że taka klaso-podobna obiektowość rzadko jest nam naprawdę potrzebna, to raczej kwestia nawyku osób przychodzących z Javy/C++ itp, które chciałyby żeby wszystko co się da coś skądś dziedziczyło (wiem, wiem, sorry ;>)
klasy są też czymś, co w CS nie podoba mi się najbardziej. tym bardziej, że to co się dzieje w CS nie rozwiązuje problemów które miały miejsce w JS - nadal, chociażby, nie ma naprawdę prywatnych zmiennych dostępnych z poziomu metod.

natomiast z tym, że kod jest jasny, przyjemny i miło się na niego patrzy się jak najbardziej zgadzam.

Następna dyskusja:

java script dla opornych - ...




Wyślij zaproszenie do