•  

    pokaż komentarz

    Zbyt hermetyczne :) Ja tam prosta babeczka, wolę ciuszki niż programowanie :P

    Choooociaż maturę nieobowiązkową z matematyki zdawałam!

  •  

    pokaż komentarz

    Data publikacji oryginału: kwiecień 6, 2000

    •  

      pokaż komentarz

      @kosmita: Piękno tego wpisu polega na tym, iż mimo jego "starości" jest aktualny. Prawdopodobnie 98% programistów chciałoby przepisać od nowa software, do którego się dosiadają.

    •  

      pokaż komentarz

      @kev: nie przeczę, poniekąd aktualny. Dlatego nie zakopałem.
      To co się zdezaktualizowało to pewne generalne zasady dotyczące programowania. Zwróć uwagę:
      - programiści raczej rzadko pracują sami. Oprogramowanie tworzą najczęściej zespoły i to nie do programistów a do szefów projektu należy podejmowanie decyzji o ewentualnym przepisaniu całości czy części kodu. W Netscape to managerowie projektu położyli sprawę - nie wiń programistów, oni zrobili kawał świetnej roboty. Podobnie było w Borlandzie i MS. Ci programiści to była elita i zwalanie na nich winy jest niesprawiedliwe. Gdybyś zapytał ich o zdanie, widziałbyś, że nie patrzyli zbyt przychylnie na pomysły przepisywania od zera. To dla nich zbyt oczywiste, coś w rodzaju "nie dotykaj językiem klamki w zimie".
      - bardzo często początkowe wersje oprogramowania są pisane bez przestrzegania rutyn umożliwiających szybkie modyfikowanie modułów. Tak jest w większości wypadków startupów - napisz, odpal, jeśli zadziała, chwyci rynek - będziemy się tym martwić później. I jeśli daj boże chwyci, to niestety najczęściej trzeba przepisać wszystko na nowo: Nasza-klasa, Wykop, Allegro - patrz gdzie chcesz... zawsze znajdziesz ten sam scenariusz rozwoju.
      - większość poprawnie wykształconych programistów wynosi ze szkoły podstawowe zasady "ogarniania swojego warsztatu" - w tym, tworzenie poprawnych, modułowych, modyfikowalnych struktur. MVC ma już 30 lat... fakt, ta wiedza z ogromnym opóźnieniem dociera do rodzimych a zwłaszcza domorosłych programistów, jednak w wypadku fachowców, to "basic".

    •  
      k.........c

      -11

      pokaż komentarz

      @kev: ok, to od dzisiaj co miesiąc wrzucaj ten sam artykuł tak dla przypomnienia. Dzięki.

    •  

      pokaż komentarz

      Komentarz usunięty przez moderatora

    •  

      pokaż komentarz

      @kosmita: Zabawne jest to, że Spolsky pisał ten artykuł w roku 2000 marudząc na Netscape nie wiedząc, że projekt ten wyewoluował w Firefoxa. Może jednak warto było przepisać go od nowa i przegonić w dłuższym okresie czasu konkurencję niż stopniowo tworzyć coraz większą i trudniejszą w utrzymaniu kobyłę, którą lepiej zamienić na IE ;)

    •  

      pokaż komentarz

      @kosmita: dobrze, że zwróciłeś na to uwagę, bo już myślałem, że jestem jakimś człowiekiem z przyszłości, bo mam wersję 9....

  •  

    pokaż komentarz

    W temacie: jeszcze NIGDY moja decyzja o przepisaniu kodu nie okazywała się zła. Mój projekt, który dłubię hobbystycznie (uniwersalny daemon, architektura modularna, event-oriented etc., założenia jak w linuksowym kernelu) doczekał się już czwartego re-write od zera .. i z każdą wersją robi się lepszy. I do moich - i biznesowych - zastosowań bije "konkurencje" (opensource) na głowę.

    Natomiast w biznesie taka decyzja nie zawsze zależała ode mnie. Czasem moje postulaty "przepiszmy to gówno bo rzygam jak je widzę" okazywały się słuszne, czasem nie.

    I z perspektywy czasu, bardzo się cieszę, że "góra" niejednokrotnie odmawiała mi prawa do przepisania kodu. Teraz widzę, że ugrzązłbym w jeszcze głębszym bagnie, niż poprawiając "stary" kod.

    •  

      pokaż komentarz

      @xardas_pl:
      Zagadzam się. Dodam ponadto, że w niektórych dziedzinach programowania, np. stron internetowych pojawiają się co chwila nowe technologie i funkcjonalności. Czasem warto przepisać megachaotyczną stronę w php do wielkiej mocy frameworka (nie wykluczam też zmiany języka), by w ten sposób zyskać możliwość szybszego rozwoju. Do bardziej przejrzystego kodu jest też łatwiej wdrożyć nowych ludzi.

    •  

      pokaż komentarz

      Gdybyś tego nie przepisywał 4 razy miałbyś teraz 4x więcej funkcjonalności

    •  

      pokaż komentarz

      @koszernyrozum: zbugowanej, ciężkiej do rozwijania, przestarzałej (zaczynając w czasach PHP4), niezarządzalnej, obładowanej hackami. A prosty, w pełni funkcjonalny serwer socketowy (obsługujący dowolną ilość połączeń) w najnowszej wersji wygląda tak:
      http://pastebin.com/hKC6V7Mx

      w pierwszej wersji niestety daleeko byłoby od elegancji. poza tym to platforma, nie aplikacja. tutaj nie da się stukać funkcjonalności w nieskończoność. platforma pozwala na wszystko, co potrzebne w budowie daemona - reszta byłaby na siłe ;-)

    •  

      pokaż komentarz

      @xardas_pl: Czy to nie jest przypadkiem produkt na 100 linijek kodu? Jeśli nie, to myślę, że mądrzejsze byłoby skopiowanie chociaż części procedur zamiast kasować wszystko 4 razy.

    •  

      pokaż komentarz

      @joker1999: Jesteś w wielkim błędzie. Żeby użycie miało 100 linii kodu, cała platforma ma kilka(naście) tysięcy;-)
      Przykro mi, procedury z wersji 1 nie nadawały się do użycia (pamięciożerne, prockożerne).
      Z wersji 2 były zwyczajnie nieelegancje, połatane.
      Wersja 3 nie wytrzymała zderzenia z PHP5 i nowymi wzorcami projektowymi, a także z moim poznaniem lepszych rozwiązań problemów.

      Wersja 4 (aktualna) istnieje już trzeci rok i ma się dobrze - więc jednak uważam, że nie popełniłem błędu ;-)

    •  

      pokaż komentarz

      @xardas_pl: tak, tylko cała wiedza leży w Twoich łapkach, także nie piszesz de facto całkowicie od nowa, tylko w pewnym szerokim sensie refaktoryzujesz kod. Pewnie kupę rzeczy zrobiłeś copypastem.
      Co innego, kiedy przychodzisz do firmy mającej własną aplikację i mówisz :" napiszmy wszystko od nowa" .

      Ale sam mam taką sytuację, że system jest po prostu skopany w dodatku w technologii która przestała być wspierana x lat temu. System niby działa ale każda modyfikacja pociąga za sobą niesamowity wkład pracy.

      Także to nie jest taka prosta decyzja czy pozostać przy starym-znanym gównie, czy pakować się w neiznane.

    •  

      pokaż komentarz

      @dixx: nic nie zrobiłem copypastem pod względem kodu. kopiowałem za to idee, ulepszając je w międzyczasie ;-)

  •  

    pokaż komentarz

    Niezłe synchro - akurat wczoraj zacząłem pisać od zera swój engine serwisu internetowego ;] Kto wie? może to błąd...

    •  

      pokaż komentarz

      @xardas_pl:
      Podepne się pod temat.
      Który z frameworków do PHP polecacie do nauczenia się ? Ogarniam Code Igniter ale jest trochę ograniczony. Myślałem o CakePHP i właśnie Symphony.
      Jakieś za i przeciw jednego i drugiego?

    •  

      pokaż komentarz

      @markier
      Ja wprawdzie staram się już uciekać od PHPa, nie śledzę tak bardzo rozwoju technologii, ale ekipę od Symfony zawsze uważałem za jednych z najbardziej profesjonalnych programistów piszących biblioteki do PHPa. Jeśli tylko się czegoś tknęli, to mogę być z góry pewny, że to będzie pod każdym względem wysoko-jakościowe. Rzecz w tym, że PHP jest takim dziwnym światkiem, w którym to, co bardziej popularne, jest nieraz totalnie do dupy - nawet PEAR to w większości gówno rodem z ubiegłego stulecia. Wzorców projektowych oraz bardziej zaawansowanych technik programistycznych się praktycznie w ogóle w tym języku nie spotyka, choć w innych są one codziennością.

      Natomiast ekipa Symfony uparła się, aby jednak przynieść nutkę profesjonalizmu do PHPa :-) Programują eventowo, mają nawet swój kontener DI (jest też parę alternatyw, jednak nie wartych IMHO zainteresowania), co jest naprawdę niesamowite.

      Piszę o tym w ten sposób, zamiast wymieniać poszczególne zalety frameworka, gdyż go, prawdę powiedziawszy, nie znam ;-) Jednak życie mnie nauczyło, że bardzo często więcej daje zwrócenie uwagi na to, kto dane oprogramowanie tworzy, niż to, jak ono w zasadzie wygląda względem konkurencji. Jeśli różnica nie jest duża, to ewentualne luki najprawdopodobniej szybko zostaną zapełnione - nie ma co się martwić. Za to każde oprogramowanie ma skłonność do zaskakiwania - z tym, że, o ile to napisane przez profesjonalistę zaskakuje pozytywnie, bo nagle się okazuje, że coś skomplikowanego da się zrobić w bardzo prosty sposób, o tyle to gorzej zaprojektowane na pewno prędzej, czy później nas na tyle wkurzy, że zaczniemy liczyć, ile już na nie zmarnowaliśmy i czy opłaca się jeszcze przesiadać na coś innego.

    •  

      pokaż komentarz

      @markier: zalety symfony:
      Jest. Działa. Wspiera PHP5 (w tym PHP5.3). Jest szybkie. Bezpieczne. Stabilne. Szybko się rozwija. Elastyczne. Modularne. Z wielkim wsparciem. Świetnie udokumentowane

      zalety cakePHP:
      Jest. (i śmierdzi.)

      wierz lub nie, ale porównanie mniej więcej trafne ;-)

      @Brut_all: ekipie z Sensiolabs (to ci francuzi od symfony) świetnie udaje się przenoszenie kodowania w php na wyższy poziom. Rozwiązań z ich systemu trudno szukać u konkurencji ;-)

    •  

      pokaż komentarz

      @xardas_pl: twoja opinia nie jako stwierdza, że ani symfony, ani cakephp nie znasz dobrze. Przede wszystkim ciasteczko(cakephp) stawia na kompatybilność z PHP 4, więc nie powinno się w porównaniu przytaczać na plus, że symfony jest pisane pod php 5. Z powodzeniem używałem jednego jak i drugiego, z tym, że osobiście bardziej jestem przekonany do sf. Obydwa frameworki reprezntuja dwa różne światy(idee) i dla mnie porównywanie ich, na płaszczyźnie, na której ty to zrobiłeś jest olbrzymim błędem. Dalej, jak można napisać, że coś wspiera PHP 5 jak na php 4 po prostu symfony nie ruszy, bardziej bym się zgodził z twierdzeniem że cake wspiera php 5, bo działa z powodzeniem na jednej jak i drugiej wersji. Dla ciebie pewnie PHP 4/5? jest lepsze od Pythona, ponieważ wywołanie funkcji kończysz średnikiem,a pod tym wzgledem moge tobie podać kupę argumenty dlaczego własnie python w tym wyścigu wygrywa. Podaj więcej argumentów, popartych jakimś doświadczeniem, a nie tym co można wyczytać w necie. "ekipie z Sensiolabs (to ci francuzi od symfony) świetnie udaje się przenoszenie kodowania w php na wyższy poziom. Rozwiązań z ich systemu trudno szukać u konkurencji" możesz rozwinąć ta myśl, bo tak samo ciacho jak i sf wykorzystuje architekturę mvc. Jakie rozwiązania, co konkretnie?

    •  

      pokaż komentarz

      @xardas_pl: Nie moge już edytować, ale symfony w niektórych sytuacjach też wydaje się wyjątkowo toporne, w których dla odmiany cake jest daleko przed nim.

    •  

      pokaż komentarz

      @masiakla
      "Przede wszystkim ciasteczko(cakephp) stawia na kompatybilność z PHP 4, więc nie powinno się w porównaniu przytaczać na plus, że symfony jest pisane pod php 5"

      Powinno. PHP5 wyszedł 6 lat temu, nie ma problemów z hostingiem dla niego, jeśli ktoś nadal walczy o kompatybilność z PHP4, to sam sobie strzela w stopę.

      "Dalej, jak można napisać, że coś wspiera PHP 5 (...)"

      Normalnie? Coś wspiera PHP5, to znaczy korzysta z jego featureów, co sprawia, że kod jest dużo bardziej czytelny, wydajny i elastyczny. Jeśli wiesz, że coś jest zgodne z PHP4, to możesz z góry zapomnieć o połowie dobrych rozwiązań i szykować się na jakiś rozpieprzony kod. W PHP4 nie da się pisać porządnie, gdyż brakuje mu wielu podstawowych narzędzi - PHP5 miał właśnie głównie za zadanie poradzić sobie z tym problemem.

      Dlatego właśnie ja staram się omijać szerokim łukiem wszelkie oprogramowanie, które deklaruje zgodność z PHP4.

      Wstawki o Pythonie to w ogóle nie kumam ;-)

    •  

      pokaż komentarz

      @masiakla: moja wypowiedź niejako stwierdza, że nie bardzo mi się chciało wchodzić w kolejny framework-war w swoim życiu. Cake znam pobieżnie, dzięki symfony zarabiam od hm..niedługo stukną cztery latka (pamiętasz symfony 0.6? nie? no widzisz, a ja na nim programowałem). Także wierzę, że jednak znam.
      Jakie rozwiązania: DI Container, sfFinder, EventDispatcher, sfForm, sf*Plugin, sfMixins, sfBrowser, Lime - wystarczy? to tak z głowy na szybko, bez otwierania żadnego projektu.

      Cake jest pisany pod PHP4. Nie czerpie z zalet PHP5. Tyle. Kto teraz używa PHP4? Przez takich ludzi jak Ty wciąż na hostingach brak mi genialnego PHP5.3.

      Skąd ta wstawka o Pythonie? I skąd do cholery wiesz ja co o nim sądze? W każdym razie z opinią mocno spudłowałeś.

      Chcesz merytorycznej dyskusji z toną argumentów? Prowadziłem w swojej firmie prezentację nt. symfony także myślę, że mam czym się podeprzeć. Ale w tym celu zapraszam na maila, nie lubię pisać felietonów na wykopie.

    •  

      pokaż komentarz

      @Brut_all: "Jeśli wiesz, że coś jest zgodne z PHP4, to możesz z góry zapomnieć o połowie dobrych rozwiązań i szykować się na jakiś rozpieprzony kod." - to bardziej zalezy od kultury programowania(o ile można powiedzieć) jak od samego środowiska.

      @xardas: nie zamierzam otwierać tutaj flame'a na temat frameworków php bo zaraz ktoś wyskoczy z innymi. Nie jest moja winą, że firmy hostingowe nie chcą instalowac PHP5.x, nie mam nic do tego. Sam od od dłuższego czasu korzystam z serwerów dedykowanych, by własnie nie mieć problemów z obsługą czegoś tam, na wszystkich jest PHP 5.3, bynajmniej to akurat nic nie zmienia w temacie. Sam w sobie obecnie zaczynam być coraz bardziej szczesliwy, ponieważ uciekam po prostu od PHP jak tylko się da na rzecz pythona, ruby. Jeżeli mój komentarz jakoś ciebie uraził to przepraszam, po prostu twoja wypowiedź wydała mnie się tendencyjnam jakbyś miał tylko zamiar się odezwać w tym temacie. Swoją przygodę z sf zacząłem niewiele później jak ty, z cakiem podobnie.

    •  

      pokaż komentarz

      @masiakla: to uciekaj, większy kawał tortu dla mnie ;-)
      PHP zaczyna iść w całkiem niezła stronę: SPL (nareszcie, k!!!a, nareszcie!), przestrzenie nazw, prawdziwe domknięcia i lambdy.. jeszcze tylko statyczne typowanie, pełne wsparcie utf8, zaoranie wszystkich funkcji typu str* array* etc. i przeniesienie ich do SPL (biblioteki standardowej) i będzie to bardzo, bardzo fajny język.

      A przynajmniej na tyle fajny i trudny, że odpadnie 3/4 małolatów, którzy psują rynek - klient nie przyjdzie do mnie za 10k, przyjdzie do dzieciaka za 1.5k, takie realia rynku. Choć i na to mam wypracowaną odpowiedź:
      "jasne, że drogo. chętnie polecę studenta, ktory zrobi to 5/10x taniej. ale od razu mówię - wróci Pan do mnie za miesiąc czy dwa"
      działa. ;-)

      edit#1: W temacie PHP4 to nie do końca masz rację. PHP4 po prostu wymusza burdel. Do elegancji znanej z PHP5 dzielą go lata świetlne. Niestety.

    •  

      pokaż komentarz

      @masiakla
      "to bardziej zalezy od kultury programowania(o ile można powiedzieć) jak od samego środowiska."

      Kultura nic Ci nie da, jeśli nie będziesz miał możliwości, narzędzi. Prawdę powiedziawszy, to już nie pamiętam dokładnie, co doszło w PHP5 - to dawno było. W dokumentacji też się zbyt dużo nie znajdzie, gdyż PHP4 nie jest już supportowany, więc zniknęły wszelkie podziały na "feature X w PHP4 oraz w PHP5", zostały jedynie dodatki o migracjach.

      Jednak wystarczy spojrzeć tutaj: http://www.php.net/manual/en/oop5.intro.php . Bez interfejsów oraz klas abstrakcyjnych, /visibility/ metod oraz atrybutów, możliwości definiowania typów argumentów, itp. zwyczajnie nie masz możliwości napisania tak dobrego kodu, jak z tymi wszystkimi rzeczami. Inna sprawa, to te featury, które dochodzą w PHP5.3, a które już wymienił xardas_pl - nimi nie miałem okazji się pobawić, jednak naprawdę długo na nie czekałem. Znów umożliwią one napisanie znacznie lepszego kodu, więc przynajmniej dla mnie stwierdzenie, że dane oprogramowanie ma wsparcie dla PHP5.3 i nie działa na PHP5.2 to naprawdę zaleta :-)

      @xardas_pl
      Zgadzam się, jest coraz lepiej i naprawdę niewiele już PHPowi brakuje, aby "dało się w tym pisać" ;-) Póki co zmęczył mnie już za bardzo, więc staram się unikać, jednak za parę lat - kto wie? ;-)

  •  
    P........................y

    +6

    pokaż komentarz

    Zawsze się zastanawiałem, ile procent Linuksa jest w Linuksie, tzn. ile procent niezmienionego kodu z pierwotnej wersji jądra 0.01 przetrwało do dzisiaj? Albo ile Windowsa 95 jest w Windowsie 7?