znalezione wpisy oznaczone „sztuka programowania”:

Wystarczająco prosty projekt interfejsu

Stworzenie prototypu funkcjonalnego interfejsu użytkownika w postaci obrazków (choćby i klikalnych, ale nie udających prawdziwego systemu) zamiast w jakiś sposób programistyczny (np. za pomocą „faktycznie działającego” HTML-a) ma kilka ciekawych konsekwencji, które z punktu widzenia jego przeznaczenia należy z pewnością uznać za zalety

Modelowanie niezupełnie rzeczywiste

W najróżniejszych ogólnych opisach i wstępach do technologii mówi się często, że programowanie obiektowe przedstawia związki między pojęciami w sposób analogiczny jak to ma miejsce w świecie rzeczywistym. Dzięki temu oprogramowanie ma być bliższe prawdziwemu światu — opiera się na interakcji autonomicznych obiektów, a nie tylko na wykonywaniu jakiegoś abstrakcyjnego ciągu rozkazów. Zgodnie z tym wszelkie dodatkowe technologie, które wyewoluowały z tego paradygmatu, w szczególności UML, oferują zestaw pojęć i notacji do „modelowania świata”. Taki model przekłada się potem na klasy, które w założeniu mają reprezentować obiekty lub pojęcia rzeczywiste czy chociażby wyobrażalne oraz relacje między nimi. Zadziwiające, jak łatwo udowodnić, że jest to bzdura... Chociażby wykorzystując stary (nawet jeśli znany, to wart przypomnienia) przykład z kwadratem i prostokątem.

Akceptujesz?

Poniższy obrazek znalazłem w drukowanej dokumentacji pewnego systemu stworzonego dla poważnej instytucji publicznej. Zakładam, że nie jest to chochlik drukarski i faktycznie takie okienko jest prezentowane nieszczęsnemu użytkownikowi.

Notacja Węgierska - rehabilitacja?

jak można być na tyle głupim, żeby bezkrytycznie dać sobie wmówić, że Charles Simonyi był na tyle głupi, żeby wymyślić „notację węgierską” tak, jak to zostało przedstawione światu..?

double on the floor

Krótko ilustrowana opowieść o tym, jak skomplikowana bywa praca programisty

Phalanger - spotkanie pierwsze

The Phalanger is a complex solution giving web-application developers the ability to benefit from both the ease-of-use and effectiveness of the PHP language and the power and richness of the .NET platform. This solution enables developers to painlessly deploy and run existing PHP code on an ASP.NET web server and develop cross-platform extensions to such code taking profit from the best from both sides.

I co z tego, że działa...

Każdy, kto usiłuje traktować tworzenie oprogramowania z szacunkiem należnym, jeśli nie sztuce to przynajmniej rzemiosłu, musi przyznać, że „działa” to za mało. Program może działać i wykonywać wszelkie zachcianki użytkownika/zlecającego/klienta i równocześnie być zupełnie marnym produktem software'owym.

lepiej późno czy wcale?

Niedawno kolega zadał mi pytanie: „czy ten PL jest faktycznie tak bardzo inny?” Chodziło o porównanie języka PL/I i Javy, a konkretnie o to, czy dzieląca je przepaść może być tak ogromna, że dla niektórych nie do przeskoczenia.

wycieczka do piekła

Im więcej różnych programistów lub zespołów roboczych pracuje nad projektem informatycznym w czasie całej jego historii, tym trudniej jest „zgrać” efekty ich działań i tym niższej jakości jest produkt tego projektu. Obserwacja ta wydaje się oczywista, wręcz banalna, a mimo to bywa zupełnie niepojęta

punkt siedzenia - punkt widzenia

Zadanie testowe dla analityka systemowego — czy zaprezentowana poniżej konstrukcja adresu w Polsce jest poprawna przy założeniu, że w rozpatrywanym systemie nie funkcjonują słowniki miejscowości, nazw ulic ani kodów pocztowych; czas wykonania: 7 sekund

Targeting Small Screens

Truizm: urządzenia przenośne to <del>przyszłość</del> jutro komputerów osobistych. PDA czy inne MDA stają się z dnia na dzień lepsze, szybsze, mocniejsze i ... po prostu ciekawsze.

Ten Most Wanted Design Bugs

Dzięki genialnym wynalazkom, jakimi są RSS i Bloglines, oraz spostrzegawczym ludziom, do jakich należy Simon Willison, napotkałem w sieci listę Ten Most Wanted Design Bugs.

koszmar na jawie

Dla projektanta systemu informatycznego Java to całkiem przyjemne narzędzie, złego słowa nie powiem... Wystarczy opanować kilka klocków, patternów czy innych patentów i można poskładać z nich dowolnie skomplikowane rozwiązanie. Uwzględniając jeszcze fakt, że większość narzędzi CASE obsługuje kod źródłowy w Javie (i to również w zakresie reverse engineering) można ulec wrażeniu, że da się to zrobić stosunkowo łatwo. Dodatkowo odwołując się do kilku popularnych sloganów, np. o „niezależności od platformy”, można decydentom różnego szczebla sprzedać pomysł wykorzystania technologii Javy z etykietką „dobre rozwiązanie”.

Brainfuck na śniadanie

Powrót do pracy po dwóch tygodniach urlopu niechybnie oznacza cios. Jeżeli taki powrót następuje w sytuacji balansowania między dwoma projektami to ciosy padają ze wszystkich strona równocześnie. Umysł niebezpiecznie wręcz rozluźniony, odzwyczajony zarówno od walki o utrzymanie się na powierzchni grzęzawiska jak i od ścisłej koncentracji w niesprzyjających warunkach, potrzebuje w takich chwilach szybkiego sformatowania — np. w postaci małego ćwiczenia w Brainfucku.

na notację węgierską zawsze można liczyć

...jako na dowcip, który zawsze śmieszy. A jeśli jeszcze zostanie ona zastosowana w sposób jaki odkryłem dzisiaj w ramach działań archeologicznych na "The Daily WTF" to faktycznie może rozświetlić najsmutniejszy wieczór ;-)

COOL:Gen

Pod koniec XX wieku pracowałem przez kilka lat nad systemem napisanym w środowisku COOL:Gen (wtedy jeszcze produkcji Sterling Software). Oryginalny pomysł nie był nasz, przejęliśmy projekt z całym dobrodziejstwem inwentarza. Wtedy sprawa była bardzo ciężka, klient (spora instytucja finansowa) po prostu zaczął pracować na systemie, którego jeszcze nikt nie zdążył napisać — bagno po same uszy, nie jakieś lajcikowe grzęzawisko. Przez dłuższy czas pracowaliśmy oficjalnie po 12 godzin dziennie plus soboty. Jednak dziś, patrząc na to z dystansu jestem bardzo zadowolony, że takie coś mnie w życiu spotkało. Ze względu na COOL:Gena właśnie.

PHP vs ASP.NET the world

Niedawna premiera PHP 5 spowodowała lawinowy wręcz przyrost artykułów i najróżniejszych wypowiedzi w stylu Why PHP 5 Rocks. Ogólna opinia "społeczności developerów aplikacji webowych" wydaje się sugerować, że tym razem jest to już poważne zagrożenie dla ASP.NET.

XML

XML — skrót robiący w ostatnich latach niewyobrażalną wręcz (i mocno niepokojącą, o czym za chwilę) karierę. I to skrót właśnie, te magiczne trzy literki, nie nazwa "eXtensible Markup Language", i z pewnością nie specyfikacja tegoż. W zbiorowej świadomości ludzi związanych z informatyką "akurat na tyle, żeby się ciężką prac nie pobrudzić" XML zagnieździł się na dobre. A że niezupełnie w tej przegródce co trzeba, to wydaje się mało istotnym szczegółem technicznym...

select *

Trafiłem niedawno na artykuł "The Case Against SELECT *", w którym autor podważa zasadność stosowania * w zapytaniach SQL.

standard kodowania

O standardach pisania kodu programu powiedziano już bardzo wiele. Jest to jeden z najbardziej wyrazistych aspektów ludzkiego wymiaru programowania — styl kodu nie ma przecież żadnego znaczenia dla kompilatora i jego "jakość" to wyłącznie subiektywne odczucia programisty. A jednak sprawa od zawsze budzi wiele emocji — kod może być "elegancki" i "ładny" albo "brzydki" i wtedy taktowany jako produkt niskiej jakości (niezależnie od jakości skompilowanego programu). Nic dziwnego zatem, że powstają nawet oficjalne wytyczne na temat stylu kodowania, np. Suna dla Javy lub Microsoftu dla .NET-u oraz dziesiątki innych opracowań (prywatnych lub korporacyjnych), które zazwyczaj bazują na powyższych lub innych sławnych źródłach typu "C++ Coding Standard" Todda Hoffa.

niemodna optymalizacja

Tempo postępu technologicznego w informatyce jest (przynajmniej dla mnie) jednym z największych zaskoczeń ostatnich dziesięcioleci. Moc obliczeniowa komputerów wzrasta tak szybko, że nieraz jest to "poniżej ludzkiej godności", jak zwykł mawiać mój kolega. Znaczenie określenia "dobry sprzęt" zmienia się błyskawicznie i wyobrażam sobie, że ludzie chcący za tym nadążyć nie zajmują się niczym więcej. Niestety wraz ze sprzętem dewaluuje się pojęcie "dobrego" oprogramowania. Przyzwyczajeni do szybkich i tanich komputerów przestajemy zwracać uwagę na takie szczegóły jak optymalizacja kodu, wykorzystania pamięci czy szybkości obliczeń. Problemy z wydajnością oprogramowania nagminnie rozwiązuje się bezczelnie prostym stwierdzeniem — "poda się w specyfikacji większą ilość wymaganej pamięci, to kosztuje grosze". I niestety to jest prawda, co tylko umacnia trend ignorowania pojęcia optymalizacji. Jednak paradoksalnie rozczarowanie przychodzi w momencie kiedy zechce się napisać coś "naprawdę zgodnego z trendami", ponieważ "trendy" to dzisiaj urządzenia mobilne.

IntelliSense

Najważniejsza, obok kolorowania składni, funkcjonalność edytora kodu — przewidywanie co chcesz napisać i podpowiadanie gotowych rozwiązań. Czy to się nazywa IntelliSense, code completion, code hinting czy jeszcze jakoś inaczej — bez znaczenia. Ważne, żeby było i żeby działało sprawnie, bo od tego zależy jakość, szybkość powstania, a nieraz w ogóle zaistnienie kodu.

the joy of Smalltalk

Jedno mam za złe szkołom i uczelniom, do których dane mi było uczęszczać — nie nauczyli mnie Smalltalka, przez co mój kontakt z prawdziwym sensem programowania obiektowego opóźnił się o całe lata.

błąd nasz codzienny

Nie ma systemu bez błędów. Im szybciej się z tym pogodzisz tym lepiej.

dokumentacja kodu

Pracowałem kiedyś przy projekcie, w którym robiłem pewien moduł w znacznym stopniu niezależny od reszty systemu (sam go zaprojektowałem i sam zaprogramowałem), mogłem więc obserwować całość z boku. W sumie działało tam ośmiu programistów, o różnym stażu, różnych doświadczeniach i umiejętnościach, nawet rozmieszczonych w niemal krańcowo odległych lokalizacjach w Polsce. Oprócz mnie może jeszcze jedna osoba tworzyła w kodzie komentarze dla zwiększenia jakości kodu, a nie dla wyrażenia swoich frustracji. Oprócz mojego żaden moduł programu nie posiadał kompletu własnej dokumentacji. A całość była pisana w javie, więc stworzenie sensownej i kompleksowej dokumentacji kodu (z użyciem Javadoc) wymagało jedynie odrobiny dobrej woli...

DateTime

Wśród programistów funkcjonuje kilka takich .... skrótów myślowych, które nieodmiennie wprawiają mnie w zdumienie. Np. problem formatu liczby, lub jeszcze gorzej — formatu daty.