Mateusz Pułkowski

Mateusz Pułkowski Specjalista ds.
Public Relations w
Enea Wytwarzanie

Witam.

Jakiego Waszym zdaniem języka programowania warto się obecnie nauczyć? Którego znajomość daje największe możliwości znalezienia pracy, a który jest najbardziej perspektywiczny? Dużo dobrego słyszałem o języku Ruby. To prawda, że migracja z PHP postępuje i niedługo coraz częściej poszukiwani będą programiści Ruby? Chciałbym nauczyć się jednego, dwóch języków wykorzystywanych w aplikacjach internetowych. Do tej pory poznałem i dobrze opanowałem jedynie HTML, teraz chciałbym się dokształcić (zacząć dokształcać) w tym kierunku. Z czym warto połączyć znajomość poszczególnych języków, aby jeszcze zwiększyć swoje umiejętności (np. Ruby - Ajax?). Dzięki za wszelkie sugestie. Pozdrawiam.

konto usunięte

Naucz się solidnie PHP i MySQL - ten duet sprawi, że praca przy tworzeniu serwisów sama Cię znajdzie dzisiaj i za 5 lat. Możesz dorzucić do tego JavaScript (Ajax) i XML.
Mateusz Pułkowski

Mateusz Pułkowski Specjalista ds.
Public Relations w
Enea Wytwarzanie

Możesz polecić jakąś konkretną literaturę? Na polskim rynku tyle jest tego, że nie wiadomo, za co się złapać i co jest na ile wartościowe. Z góry dzięki, za konkretne tytuły.
Ja ci proponuje:
1) zakupic uzywanego blaszaka ( koszt ok 200-300 zloty ), postawic na nim ubuntu badz jakis rownie latwy system linuxowy i spiac sobie go w siec z wlasnym kompem. Skonfigurowac go najlepiej zdalnie ( przez ssh ), zainstalowac na nim server + klient MySQL, Apache, PHP + modul do mysql.
2) Wymyslec sobie temat do nauki. Np. zrobie sobie galerie zdjec z wypas bajerami. A najlepiej zrobic sobie/koledze cos przydatnego.
3) Wygooglowac kursy php.
4) W razie jakis problemow przeczytac manuale na php.net.pl czy wygooglowac.
5) Realizowac temat nauki i osiagajac coraz wyzszy dan, dokladac sobie uzycie jakis technologii ( np. AJAX )

Co ci da taka nauka?
1) Nauczysz sie szybko znajdowac rozwiazania problemow na sieci ( ksiazka cie tego nie nauczy ) i zrozumiesz 'slang' innych programistow ktorzy podpowiadaja rozwiazania ( z mojego doswiadczenia, gdy uczylem sie linux'a, za cholere nie moglem zrozumiec i zaaplikowac rozwiazan ktore znalazlem na googlu, jednak jak patrze na to z perspektywy czasu, to obecnie tez bym w takiej formie sugerowal rozwiazania ;-)
2) Nauczysz sie rozumiec dokumentacje od softu - ona najczesciej jest pisana przez programistow a nie bajkopisarzy.
3) Bedziesz rozumial jak dziala twoj kod, w przypadku przykladow ksiazkowych raczej nie bedziesz mial pewnosci ze to dziala tak a nie inaczej
4) Nauczysz sie konfigurowac Apache oraz MySQL i ciutke lizniesz linuxa

Po skonczonej zabawie warto zwerbowac kogos do user testow - bo napisac aplikacje idioto-odporna ( wierz mi, nie przewidzisz nawet 20% tego co zrobia userzy z twoja aplikacja ) bez user testow to jest niemala sztuka

Jesli w taki sposob uda ci sie nauczyc ( w tym wypadku php+mysql ), to nie stoi zupelnie nic na przeszkodzie zeby analogicznie douczyc sie Ruby.

Wg. mojej opinii ksiazki do nauki sa OK, ale jako uzupelnienie wiadomosci ( nie wszystko mozna znalesc na sieci co jest w miare opisane dla poczatkujacego, czasem jest nadmiar danych w przykladzie i ciezko wylowic co jest istotne ) a nie jako baza wiedzy. I swietnie sluza jako podstawka pod monitor ;-)

Ale traktuj moja opinie jako opinie samouka, bo tak sie wszystkiego nauczylem.

Pozdrawiam
RobertRobert Mituniewicz edytował(a) ten post dnia 28.11.07 o godzinie 15:12
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Ciekawą rzecz przeczytałem w jednej z książek o inżynierii systemów: naucz sie najpierw np. teorii obiektowości i jednego z obiektowych języków. Jak tego się nauczysz to przesiadka z PHP5 na C++ lub Javę lub w innej kolejnosci nie bezie problemem. Mój znajomy programista (niezły) mówi: uczyć się należy programować a nie języków programowania.
Mateusz Pułkowski

Mateusz Pułkowski Specjalista ds.
Public Relations w
Enea Wytwarzanie

Robert, Jarosław, dzięki za rady :-)

Robert, o Ubuntu myślę od jakiegoś czasu (wcześniej miało być SUSE, ale Ubuntu chyba jeszcze bardziej user friendly, mam nawet wypaloną płytkę z najnowszą wersją, ale na razie sobie leży ;-)). Co myślisz o postawieniu Ubuntu po prostu na innej partycji i zabawie z PHP i MySQL?

Nie za bardzo widzi mi się zakup kolejnego blaszaka aby go sobie spiąć w sieć, gdyż zwyczajnie nie miałbym gdzie takiego kolejnego pudełka postawić. To konieczne, aby "wyłapać" konieczną wiedzę, czy można obejść się bez?

Książki traktuję głównie jako pigułę wiedzy podstawowej bo przyznaję, że nie miałem do tej pory styczności z PHP ani MySQL. Stąd pytanie o wartościowe tytuły. Coś tam czytałem kiedyś i - czy PHP jakoś wiąże się z HTML, bo zauważyłem podobieństwo, przynajmniej na pierwszy rzut oka? Zawsze to ułatwienie, bo jak napisałem z HTML u mnie OK.

Pozdrawiam
Dariusz K.

Dariusz K. Software Tester

Jesli nie chcesz kupowac serwera i pozostac nawet przy Windzie a pocwiczyc i pouczyc sie PHP i MySQL to "od reki" mozesz sobie zainstalowac jakiegos WAMPa lub Krasnala to sa pakiety zawierajace wszystkie potrzebne skladniki, z ktorymi bedzie dzialalo PHP i MySQL.
Jak bedziesz to mial to mozesz zaczac pisac..

Z czasam faktycznie warto pomyslec nad rozwojem tego - czyli serwer na Lnx - kolejna maszyna - itp.

------
Pozdrawiam
Darek
Coś tam czytałem kiedyś i - czy PHP jakoś wiąże się z HTML, bo zauważyłem podobieństwo, przynajmniej na pierwszy rzut oka?

W skrocie, skrypty PHP generuja kod HTML dla przegladarki :)
Da przykladu:
W HTML:
<table><tr><td>Imie</td><td>Robert</td></tr></table>

A taki sam efekt z poziomu PHP:
<?php
echo "<table><tr><td>Imie</td><td>Robert</td></tr></table>\n";
?>

Wiec po co w ogole PHP? Otoz mozesz dynamicznie generowac kod. Dla przykladu:
<?php
$imie = "Robert";
echo "<table><tr><td>Imie</td><td>" . $imie ."</td></tr></table>\n";
?>
Oczywiscie zmienna $imie mozesz wygenerowac na milion sposobow, i w ten sposob osiagasz dynamizm tak prostej stronki.

Wiecej info znajdziesz oczywiscie na kursach php online.
Pierwszy wygooglowany, wyglada przyzwoicie: http://webmade.org/kursy-online/kurs-php.php

Co do ksiazek, wg mnie zawieraja one za duzo nieistotnych dla poczatkujacego informacji. Osobiscie zdecydowanie wole kursy online pisane jak dla idiotow, bo nie musze filtrowac zbednych danych.

Mozesz oczywiscie postawic sobie linucha na oddzielnej partycji dysku, czy zainstalowac windowsowa wersje apache z php oraz mysql, ale w ten sposob nie zasymulujesz sobie procesu tworzenia www. ( Z reguly kod pisze sie w swoim ulubionym edytorze w ulubionym systemie operacyjnym, i przez FTP podrzuca sie na serwer ). Poprostu kiedys przychodzi taki moment ze trzeba umiec taki serwerek skonfigurowac
Łukasz Żuchowski

Łukasz Żuchowski Software Wizard

Ja tam polecam Jave nic php nie ujmująć.
Wpisz w jakim kolwiek portalu z pracą "j2ee" lub "java" a się przekonasz.
Ruby jest niezły zwłaszcza w połączeniu z frameworkiem "on Rails", ale to narazie przyszłość. Narazie mało firm w tym robi...

konto usunięte

Odnośnie "kupowania blaszaka" i stawiania na nim serwera...
ja osobiście przyjąłem inne rozwiązanie, które moim zdaniem jest zdecydowanie bardziej opłacalne, tzn ściągnąłem sobie VMware Server (za darmo), stworzyłem taką maszynę wirtualną jakiej potrzebowałem (o konkretnych parametrach, z konkretnym oprogramowaniem jakie było mi potrzebne) i wszystko było cacy; dodatkowo mam w domu małą sieć domową i kiedy tylko odpalałem moją maszynę wirtualną z linuxem system sam pobierał sobie ip z dhcp (...jak każdy inny komputer w sieci), co sprawiało, że miałem dostępny w sieci zupełnie autonomiczny serwer;
dużo nasłuchałem się o tym że VMware zżera dużo pamięci i procesora, ale w moim przypadku odpalony Photoshop zabierał więcej zasobów niż sama maszyna wirtualna także działało (i nadal działa) to całkiem efektywnie (a miałem tam nawrzucane całkiem sporo softu...od standardowego php+apache+mysql/postgres po jave i wszelkie możliwe i ogólnie dostępne serwery aplikacyjne, sambe, ftp itd)Marek Wójcik edytował(a) ten post dnia 29.11.07 o godzinie 16:46
Andrzej Góralczyk

Andrzej Góralczyk Poprawiam
przedsiębiorstwa.
Właściciel portalu
Dyrekcja.pl

Hmmm, jeśli chodzi o odseparowanie pracy na serwerze i na interfejsie użytkownika/administratora, to jest prostszy sposób. Instalujemy serwer ze wszystkim co trzeba. Serwerem administrujemy z localhost, a na witrynie pracujemy (w różnych rolach) ze swojego IP.
Marek W.

Marek W. Doradztwo
logistyczne,
zarządzanie zapasami

Jarosław Żeliński:
Ciekawą rzecz przeczytałem w jednej z książek o inżynierii systemów: naucz sie najpierw np. teorii obiektowości i jednego z obiektowych języków. Jak tego się nauczysz to przesiadka z PHP5 na C++ lub Javę lub w innej kolejnosci nie bezie problemem. Mój znajomy programista (niezły) mówi: uczyć się należy programować a nie języków programowania.

Zgadzam się z jednym drobnym ale... Java jest trochę (chłe chłe trochę) bardziej obiektowa niż PHP (nawet ten nibyobiektowy), więc łatwiej przejść z Javy na PHP niż odwrotnie (chyba, że ktoś tak pokocha obiektowość, że trudniej:)

Z drugiej strony jeden z szefów Grona.net wypowiadał się ze 2-3 tygodnie temu w Computerworldzie, że przeszli na Pythona, że wspaniały, że biorą programistów Javy lub PHP i przerabiają bez problemu w pythonowców ale ... wolą programostów PHP, bo ci od Javy mają niedobre nawyki. Ręce mi opadły, walnęły o ziemię, bolały dłuższy czas i dlatego dopiero teraz odpowiadam. Ciekaw jestem co on uważa za niedobre nawyki (pewnie przyzwyczajenia do programowania obiektowego:)
Andrzej Góralczyk

Andrzej Góralczyk Poprawiam
przedsiębiorstwa.
Właściciel portalu
Dyrekcja.pl

Uważa Pan programowanie obiektowe za najlepsze? Są na ten temat kontrowersje wśród czołówki programistów.

Niezależnie od tego Python - jak najbardziej. Tzn. najbardziej ceniony spośród języków skryptowych, chociaż jeszcze mało popularny. Dobry nawet dla mnie, mimo że nie jestem informatykiem i rozgryzanie zawiłości aplikacji przychodzi mi z niejakim trudem :)
Marek W.

Marek W. Doradztwo
logistyczne,
zarządzanie zapasami

Andrzej Góralczyk:
Uważa Pan programowanie obiektowe za najlepsze? Są na ten temat kontrowersje wśród czołówki programistów.

A konkretnie? (chodzi mi kto z czołówki twierdzi, że to zły pomysł i jakie daje argumenty)?

Według mnie:

Jeśli chodzi o szybkość działania aplikacji - zgadzam się, że z języków proceduralnych można wycisnąć kilka procent szybciej (z assemblera jeszcze kilka, tylko po co). Sortowanie bąbelkowe napisane w assemblerze będzie na pewno wolniejsze niż QuickSort napisany w Clipperze. Myślenie daje przyspieszenie wielkrotnie większe niż implementacja w najszybszym języku świata

Jeśli chodzi o tworzenie jednej bardzo niepowtarzalnej aplikacji (nie ma dwóch podobnych fragmentów) - zgadzam się, że obiektowość jest niepotrzebną nadmiarowością i stratączasu

(i na razie nic innego nie przychodzi mi do głowy)

Natomiast wszystkie inne przypadki dają podstawy sądzenia, że obiektowość jest wygodniejsza, szybsza i mniej błędotwórcza:

1. Znacznie większa możliwość podziału programu na moduły tworzone niezależnie
2. możliwość tworzenia programów, których funkcjonalność zostanie określona później (metody wirtualne, czyli programista obiektu bazowego zakłada wołanie nieistniejącej jeszcze metody obiektu potomnego). Oczywiście można to zrobić w języku proceduralnym, tylko po co robić sobie tyle roboty
3. Łatwość korzystania z napisanych wcześniej bibliotek (modyfikujemy tylko to co chcemy zmodyfikować)
4. Łatwość testowania (zarówno można przetestować wszystkie moduły w częściach jak i do istniejących obiektów banalnie prosto dopisywać debbugery, które skontrolują przebieg aplikacji, nawet jeśli producent obiektu tego nie uwzględnił (nie do zrobienia w językach proceduralnych)
5. Łatwość tworzenia wielu jednakowych lub nieznacznie różniących się instancji
6. Intuicyjna zgodność z programowaniem środowisk lokalnych graficznych (zaróno windows, czy wszystkie gui linuxa a nawet applety czy middlety).

i kilka kilogramów innych

Uważam, że niechęć do obiektówki wynika ze starych nawyków (cały czas kadra naukowa na uczelniach podchodzi do obiektówki z rezerwą - boją się, więc jak mają tego uczyć ludzi).

Kolejne to przyzwyczajenia do języków strukturalnych, pseudoobiektowych czy stanowych (php, javascript, vb, tsql, html bez css'a itp). Byle jaką stronę w php zrobi się w 15 minut, a do zrobienia strony w javie trzeba trochę więcej. Hosting z php zapewnia 99% firm niemal za darmo, za javę trzeba sporo zapłacić.

Cały czas brak dobrej literatury o programowaniu obiektowym, mimo że idea znana jest chyba już ponad 20 lat

Na szczęście java i .net trochę poprawiają sprawę, ale dużo jescze czasu upłynie zanim zmieni się podejście od podstaw

Marek
Wojciech Z.

Wojciech Z. Konsultant
IT/Biznesowy

Marek W.:
Byle jaką stronę w php zrobi się w 15 minut, a do zrobienia strony w javie trzeba trochę więcej.

Wiem że nie odkrywam w tym momencie Ameryki, ale tutaj jest pies pogrzebany. W teorii podejście obiektowe na etapie projektowania i implementacji tworzy przyjazny, łatwy w testowaniu kod o wysokiej ponownej używalności i małej redundancji, jednak proces tworzenia takiego kodu jest duzo bardziej złozony i wymaga więcej czasu (wiec osobogodzin - > pieniędzy), w którymś momencie na takiej skali należy się zapytać "Czy bardziej opłaca mi sie projektować obiektowo, czy też zaimplementować szybko na zasadzie proceduralnej?", ponieważ to że taki kod będzie ponownie użyty nie jest pewne, np. zmiany pewnych standardów, czy wręcz całej technologii która posługłuje się firma moga posłać te wypieszczone biblioteki na cmentarz w pół roku.
Andrzej Góralczyk

Andrzej Góralczyk Poprawiam
przedsiębiorstwa.
Właściciel portalu
Dyrekcja.pl

Nie wiem na czym polegają zarzuty wśród czołowych programistów, ale wiem od nich, że je mają. Na przykład Andrzej Gąsienica-Samek, który - nawiasem mówiąc - nie mógł mieć czasu na nabranie "starych nawyków" (daleko mu jeszcze do trzydziestki).

Jeden ze znajomych tuzów Open Source, piszący zresztą w Pythonie, przytoczył też anegdotę o projektowaniu płyty CD razem z odtwarzaczem, która wywołała długą i ostrą dyskusję.
Michał M.

Michał M. konsultant IT

W moim środowisku często słyszę podobne dyskusje, ale końcowe wnioski są zawsze takie same. Każdy język należy oceniać pod kątem zastosowania bo inaczej będą powstawać gnioty. Przecież nikt przy zdrowych zmysłach nie będzie pisał np. sterowników do urządzeń w Javie albo systemu bankowości internetowej w PHP choć na upartego by się dało. Na pewnym poziomie nie rozważa się użycia jednego czy innego języka oprogramowania, a bardziej jakie rozwiązania architektoniczne przyjąć czyli na jakiego producenta serwera aplikacji czy bazy danych się zdecydować. Tak więc dyskusje wyższości jednych języków nad innymi można potraktować mniej więcej tak jak dyskusję o wyższości Świąt Bożego Narodzenia nad Świętami Wielkanocnymi ;-)
Marek W.

Marek W. Doradztwo
logistyczne,
zarządzanie zapasami

Michał Matląg:
W moim środowisku często słyszę podobne dyskusje, ale końcowe wnioski są zawsze takie same. Każdy język należy oceniać pod kątem zastosowania bo inaczej będą powstawać gnioty.

Zgadzam się (z częścią usuniętą również). Natomiast podejście, że dany kod może nie być ponownie użyty (tezy W.Z.) nie jest do końca poprawne, bo raczej o użyciu podobnego kodu mówimy w obrębie tej samej aplikacji.

Źródło problemów leży rzeczywiście w fazie projektowania - jeśli napiszemy coś w PHP to nie da się tego w prosty sposób przepisać na javę - trzeba zmienić całą architekturę, włącznie z myśleniem. Z drugiej strony jeśłi serwis się sprawdza to warto go przepisywać, jeśłi nie to po co było marnować więcej czasu wcześniej

Możliwe, że gdyby ktoś wymyślił jakiś przyzwoity obiektowy język skryptowy (na razie trudno mi sobie wyobrazić jak by takie cudo miało działać) to może popularność obiektówki by wzrosła
Wojciech Z.

Wojciech Z. Konsultant
IT/Biznesowy

W sumie racja, jednak z drugiej strony takie kontrolki ASP, czy też klasy zarządzające dajmy na to tożsamością użytkownika swobodnie dają sie ponownie używać w wielu projektach.

Dobrym przykładem będą np. klasy logiki - w momencie gdy produkujemy aplikacje zarządzające procesem. Aplikacja ma pewien wspólny rdzeń (powiedzmy około 40%), jednak w dużej mierze ze względu na odmienne procesy/standardy biznesowe/zakresy działalności odbiorców są to aplikacje pisane pod klienta, nie "out of box". W takim przypadku posiadanie świetnie zaprojektowanych części wspólnych oszczędza masę czasu na każdym kolejnym projekcie, a w efekcie może nas doprowadzić do powstania pełnego produktu który wymaga jedynie konfiguracji + niewielkiej ilości nowego kodu. Tyle że taki plan może potencjalnie rozbić się o dwie rzeczy
a) Pisząc pierwszą aplikację nie mamy pewności ile będzie kolejnych jej wdrożeń.
b) Nie mamy pewności że nie zostanie wymuszona zmiana technologii. Jeśli poświęciliśmy 5 lat na budowę CRMa w oparciu o grubego klienta w Borland C++ to konieczność zmigrowania do aplikacji n-warstwowej, opartej o przeglądarkę może boleśnie uderzyć.

Jeśli chodzi o ponowne użycie kodu w tym samym projekcie to podobnie należy sobie zadać pytanie "Czy optymalizować, starać się zaimplementować obiektowo?". Jeśli danej funkcjonalności użyjemy jeszcze najwyżej dwa razy, to spędzanie dodatkowego osobotygodnia by zrobić rzecz w pełni obiektowo nie ma sensu.

BTW: nie chcę wyjść na wroga obiektówki, ona przede wszystkim świetnie organizuje kod i pozwala lepiej orientować się w aplikacji - niemniej jednak uważam iż nie jest lekiem który należy stosować na każdą chorobę.
Marek W.

Marek W. Doradztwo
logistyczne,
zarządzanie zapasami

Wojciech Z.:
BTW: nie chcę wyjść na wroga obiektówki, ona przede wszystkim świetnie organizuje kod i pozwala lepiej orientować się w aplikacji - niemniej jednak uważam iż nie jest lekiem który należy stosować na każdą chorobę.

Zgadzam się, natomiast często korzysta się z innej przewagi języków nieobiektowych, a mianowicie znacznie łatwiej napisać tam byle jaki kod. I oszczędność czasu często bierze się z bylejakości, a nie zastosowania szybszego w pisaniu języka.

Stąd moje negatywne podejście do rozwiązań nieobiektowych, zapewnie niepotrzebnie ortodoksyjne

Następna dyskusja:

Ultracienki laptop tylko kt...


Wyślij zaproszenie do