Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Programistyczna wojna

Jeden z praktykantów w moim zespole podjął dyskusję na temat doboru języków programowania zależnie od projektu. Dla mnie jako programisty z trzyletnim stażem taka rozmowa wydała mi się bez sensu, gdyż wybór wydaje mi się oczywisty. Jednak wspominając studia okazuje się, że początkujący programista nie ma łatwego życia. Na studiach nie ma czasu, żeby nauczyć wszystkiego, a fora są przepełnione krucjatami zwolenników różnych języków. Czyżby aż tak trudno było odpowiedzieć na pytanie jaki język jest najlepszy do nauki jako pierwszy?

Moje jest mojsze

Jednym z powodów, dla którego forumowicze są w stanie niemal umrzeć za język programowania jest to że w ich karierze jakiś język sprawdził się najlepiej. Niestety nie wszyscy mogą i chcą robić to samo, dlatego powstało tyle języków ile mamy. Rzetelnych porównań jak nie było, tak nadal nie ma. Nie chodzi do końca o same zestawienie gramatyki języków, ale też o sposób myślenia w każdym z nich, żeby osiągnąć dany cel. Na przykład wikipedia w opisach języków często ma akapity dotyczące zalet i wad, jednak te można mnożyć na potęgę, zależnie od kontekstu, np. że asembler nie ma odśmiecacza pamięci jak Java (poważnie, słyszałem taki tekst).

Jak szukać?

Nic nowego nie wymyślę ani nie zbawię świata tym, co napiszę poniżej, ale może komuś rzucę inne światło na ten problem. Na pewno nie da się odpowiedzieć na pytanie jaki język jest najlepszy, bo o tym decyduje się planując realizację projektu - ważniejsza jest w nim technologia. Tak samo nie można komuś doradzić czego najpierw się uczyć, bo wtedy najważniejsze jest zrozumienie zasad działania komputera i danego systemu. Dopiero potem dopracowuje się szczegóły. Tak jak mechanik musi wiedzieć czym jest silnik czy tłok zanim dotknie się do jakiegokolwiek samochodu. Modeli silników jest sporo, odpowiednie narzędzia dobiera się zależnie od modelu samochodu i silnika.
Moim skromnym zdaniem przy dobieraniu technologii do projektu powinno się patrzeć na:

  • wielkość projektu
  • docelowa architektura
  • wygoda i szybkość pisania projektu
  • wygoda używania i użyteczność programu

Wielkość projektu

Czy ktoś chciałby pisać Facebooka albo Windowsa w całości w asemblerze? Chyba nikt. Facebook ma do tego HipHop: wygoda PHP i wydajność trochę mniejsza od C++. Czy ktoś będzie pisać okienkową aplikację w Javie, która kasuje pliki tekstowe starsze, niż rok? Można, ale to strzelanie z armaty do muchy. Lepiej napisać parę linijek w bashu czy Perlu.

Docelowa architektura

Czasami zdarza się pisać coś na telefon komórkowy, tablet czy serwer. Nie każdy system ma ekran, nie każdy obsługuje się dotykiem czy myszą. Na PC nie trzeba liczyć taktów procesora, a dodatkowe 4 MB RAM to żadem koszmar. Nie wszędzie uruchomienie Javy ma sens.

Wygoda i szybkość pisania projektu

Pisząc dla siebie, od razu wiemy, że jeśli szybciej odpalimy Netbeans, zrobimy okienko w Javie i mamy gotowy program, to wybieramy Javę. W Perlu za to możemy zmienić nazwę tysiąca plików za pomocą paru linijek. Mając firmę, musimy też wiedzieć ilu mieć ludzi i do czego ich wykorzystać.

Wygoda używania i użyteczność programu

Użytkownik też jest ważny. Jeśli do kalkulatora każemy mu instalować nową wersję .NET albo Javy, to może się trochę zdenerwować. To tak, jakbyśmy powiedzieli: "Zrób to, bo ja tak chcę!". No cóż, my jako programiści niby wiemy więcej, ale "klient nasz pan".

Jaki mamy wybór?

Teraz małe zestawienie. Nie ma sensu porównywać wszystkich cech, dlatego wybrałem moim zdaniem ważne wyróżniki.

C++

Standard 2011 wniósł sporo zmian w STL jak i w samym języku. C++ w końcu umie domyślić się typu po tym, co jest przypisywane do zmiennej. Obsługa wątków na poziomie standardu może bardzo odciążyć projektantów wieloplatformowych programów. Wyrażenia lambda są jednym z elementów pozwalających zaliczyć C++ do grona nowoczesnych.
Tak więc w C++ mamy:
  • wybór kompilatorów
  • generyczną bibliotekę STL
  • kod tłumaczony na instrukcje asemblera
  • wybór paradygmatu programowania
  • kontrolę nad działaniem systemu

Java

Wersja 1.8 w porównaniu do pierwszych wersji jest demonem wydajności. Ma dobrze opisaną bibliotekę standardową i scentralizowaną bazę wiedzy. Nawet, jeśli zachwalana przez zwolenników przenośność nie działa, to możemy nadrobić używając JNI i refleksję.
Używając Javy:
  • nie musimy martwić się o rzeczy specyficzne dla systemu, np. rozmiar zmiennych, zarządzanie pamięcią
  • mamy silną kontrolę typów (Java bardzo czepia się rzutowania itp.)
  • mamy mechanizm refleksji
  • mamy przykłady użycia bezpośrednio od producenta

Perl

Domyślnie instalowany z wieloma dystrybucjami Linuksa. Często jest używany do tworzenia prostych narzędzi systemowych i użytkowych. Bardzo długo był bazą do tworzenia stron internetowych.
A zatem Perl:
  • jest całkiem zwięzły
  • nie wymusza deklaracji typu zmiennych
  • nie wymaga kompilacji
  • nie narzuca paradygmatu programowania
  • ma bogate archiwum CPAN

Python

Szczególnie użyteczny jako język do tworzenia wtyczek do programów. Projekty typu Django i Mercurial są przykładem na to, że w języku skryptowym można tworzyć potężne narzędzia.
Python (cechy skryptowe jak Perl):
  • ma wbudowaną w składnię arytmetykę liczb zespolonych
  • dobre zaplecze w tworzeniu aplikacji internetowych
  • wymusza czytelną składnię

Podsumowanie

Pominąłem wiele innych języków, gdyż nie byłem wstanie znaleźć odpowiedniej ilości różnic. C# ma dużo wspólnego z C++ i Javą, a Ruby z Pythonem. Myślę, że mój pierwszy wpis tutaj będzie innym spojrzeniem na programowanie, aniżeli powodem do kolejnej świętej wojny. Jeśli oczekiwaliście, że znajdziecie tu odpowiedź jaki język wybrać, to jej tu nie ma, jest to tylko wskazówka :-) .
Zamierzam dodać kolejny wpis na temat wydajności C, C++ i innych języków, ale najpierw muszę zebrać jakieś fajne dane do tabelek.
 

programowanie

Komentarze

0 nowych
Astis   3 #1 25.04.2015 22:56

Chwała za to zdanie: "Jeśli oczekiwaliście, że znajdziecie tu odpowiedź jaki język wybrać, to jej tu nie ma". Najlepiej jest spróbować napisać coś w wielu językach i wybrać ten "najwygodniejszy". Jeśli chce się na tym zarabiać to trzeba jeszcze uwzględnić rynek pracy, bo programując w np. w D nie będzie takiego wyboru ofert jak w przypadku C++.

W twoim wpisie tylko to zestawienie mi średnio pasuje. Jak dla mnie może to kogoś nowego wprowadzić w lekkie zamieszanie. Zestawiać można języki stosowane w podobnych sytuacjach (sam o tym piszesz!) np. C# i Jave, a tu tak wszystko z innej parafii.

__Tux__   13 #2 25.04.2015 23:32

@Astis: Myślę, że kontrast w zestawieniu pozwala określić różnice. C# i Java ze względu na wspólne początki mają bardzo podobne założenia i ciężko było znaleźć jakieś sensowne różnice - w sumie najbardziej wspomniany rynek pracy, ale to już nie jest cecha samych języków tylko inny równie ciekawy temat.

Frankfurterium   10 #3 25.04.2015 23:52

Przy wyborze pierwszego języka zwróciłbym też uwagę na współczesną używalność narzecza. Niektórzy na początek ciągle proponują Pascala...

Druga sprawa - ilość, jakość i aktualność wsparcia i dokumentacji.

Trzecie - ekosystem bibliotek i frameworków. Taki Clojure to naprawdę fajny język, ale generalnie niewiele można z nim zrobić. Ilość narzędzi wytwarzanych do Scali (niedawnego mesjasza JVM-a) ostatnio drastycznie spadła.

GBM MODERATOR BLOGA  20 #4 26.04.2015 00:09

Bardzo fajny tekst, dobrze się czytało :-)

Pierwszy język programowania to bolączka, bo w praktyce jeśli zniechęci daną osobę, to posiada ona pewien hmm... dyskomfort do kolejnych podejść do programowania ;-)

Mimo wszystko, dla uzupełnienia wpisu poleciłbym jeszcze dwa artykuły Gynvaela Coldwinda - programisty z naprawdę bardzo dużym stażem programistycznym (przez ponad >10 lat dotknął programowania w około 40-stu językach), a dzisiaj jest cenionym researcherem (Reverse Engineering to jego specjalność :P) i security engineerem w Google Security Team. Są to:

"Poradnik początkującego programisty":
http://gynvael.coldwind.pl/?id=238 (oprócz samego bardzo bogatego wpisu, warto zwrócić na komentarze pod nim, pochodzące od innych specjalistów-praktyków :)

"Jak udokumentować swoją wiedzę?"
http://gynvael.coldwind.pl/?id=338 (traktowałem i dotychczas traktuję ten wpis jako rozszerzenie powyższego. Świetnie obrazuje jak zdobytą wiedzę można dokumentować na rzecz "sprzedania się" przyszłym, potencjalnym pracodawcom)

Naprawdę polecam rzucić okiem :)

TomaszK-Poz   8 #5 26.04.2015 00:57

@Frankfurterium: czyli Scala >> Scalai warto się uczyc Java & Clojure?

Autor edytował komentarz.
  #6 26.04.2015 03:47

Porownanie wydajnosci roznych jezykow:
Computer Language Benchmarks Game
http://benchmarksgame.alioth.debian.org

aeroflyluby   15 #7 26.04.2015 09:44

3 letni staż, to aż dziwne, że sam nie jesteś praktykantem :)

Autor edytował komentarz.
mikolaj_s   14 #8 26.04.2015 10:20

@Frankfurterium: "Niektórzy na początek ciągle proponują Pascala.."

Zależy jaki początek masz na myśli. Dla gimnazjalisty Pascal to równie dobry początek jak każdy inny. Nie ma co oczekiwać, że będzie tego języka używać w czymś więcej niż podstawowe zadania algorytmiczne. Problem w tym, że języki C/C++ są dość trudne dla początkującego, a konkursy informatyczne są robione tylko dla tych trzech języków. Echo składni Pascala odbija się w obecnie popularnych językach, więc jest to równie dobry język do opanowania podstaw algorytmiki i podstawa do poznania nowych języków. Nie istnieje związek między tym jakiego języka człowiek nauczył się jako pierwszego, a tym w jakim najczęściej pisze. Jeśli natomiast mówimy o młodzieży w wieku licealnym to faktycznie zaczynać od Pascala to już zbrodnia.

"Taki Clojure to naprawdę fajny język, ale generalnie niewiele można z nim zrobić. Ilość narzędzi wytwarzanych do Scali (niedawnego mesjasza JVM-a) ostatnio drastycznie spadła."

Nie wiem jak w Clojure, ale w Scali możesz używać wszystkich frameworków Javowych, więc nie ma problemu z ich ilością. Clojure jest fajny, ale nie sądzę, aby stał się bardziej popularny. Skoro języki czysto funkcyjne nie przyjęły się przez wiele lat od ich wynalezienia, to raczej trudno uwierzyć, że teraz się to zmieni. Scala natomiast zostanie raczej językiem nie dla mas, a tak jak Erlang, językiem specyficznego zastosowania. Przyjęte zmiany przez Javę i te planowane ostudzają zapał do Scali. Drugi problem to fakt, że język ten rozbudował składnie nieco ponad potrzebę. Twórcy Scali już to zauważyli i mają zamiar usunąć to co zbędne i uprościć język w kolejnej wersji (po dostosowaniu Scali do Javy 8).

mikolaj_s   14 #9 26.04.2015 10:35

Nie wiem czemu pominąłeś JavaScript. Wiem, że ten język składniowo jest trochę dziwny w porównaniu do głównego nurtu, ale jest bardzo popularny, łatwy w użyciu i ma mnóstwo zastosowań. JS może się przydać nawet jeśli ktoś nie zostanie zawodowym programistą.

#r2d2#   11 #10 26.04.2015 10:36

@mikolaj_s: Problem w tym, że w gimnazjum raczej się nie uczy programowania, o podstawówce już nie wspominając. Programowanie zdarza się tylko w liceach i technikach, a tam najczęściej jest to Pascal. Co więcej, na Politechnice Śląskiej na kierunku Informatyka nadal zaczyna się od Pascala, który tłucze się przez pół roku, po czym na drugim semestrze zaczynasz od kompletnego zera C (drugi raz uczą czym jest zmienna, co to ten int itd.). Nie wiem jak jest na innych uczelniach, ale z tego co słyszałem od znajomych to raczej podobnie.

Astis   3 #11 26.04.2015 11:08

@mikolaj_s: Pascal w szkołach to już przeszłość. Przynajmniej w moim technikum od "nowej podstawy" tak jest. Stara podstawa (do rocznika 95) katowała jeszcze Pascala. Dobrze, że miałem ogarniętego nauczyciela i złagodził to dając nam do dyspozycji Delphi.

__Tux__   13 #12 26.04.2015 11:22

@Frankfurterium: Faktycznie aż dziwne, że dziś ktoś proponuje Pascala. Jedynym argumentem przemawiającym za Pascalem jest to, że w językach z klamry mogą powodować zaciemnienie kodu (z blokami begin-end ciężej jest coś nabroić). Z tym, że jeśli ktoś nie umie pisać czytelnego kodu to być może wina nauczyciela.
@mikolaj_s: Faktycznie nie pomyślałem o Javascript. Dziś nie sposób nie natknąć się na strony, które stopniem skomplikowania zbliżają się do miana poważnych aplikacji.

Może z tym nauczaniem jest tak, że wykładowcom nie chce się na nowo wymyślać zajęć. Mają już ułożone materiały na wykłady, przykładowe programy na laboratoria, sprawdzone zadania.

Berion   14 #13 26.04.2015 11:24

@mikolaj_s: Co prawda nie jestem programistą, ale coś tam w tym Pascalu zrobić potrafię. Pamiętam jak mi to wtłaczano do głowy i... no właśnie, nie bardzo chciałem się tego uczyć - właśnie dlatego że dzisiaj to martwy język i nie widziałem w tym żadnego sensu. Z tego względu, jako na dobra sprawę laik - nie polecam Pascala bo czy nie lepiej uczyć sie od razu czegoś powszechniew używanego jak C++, C#, Java, JS, Python?

Autor edytował komentarz.
  #14 26.04.2015 12:04

Te komentarze są jak "rozmawiał łysy z głuchym o grzebieniu".
Ilu z was napisało jakiś tutorial, który komuś pomógł?
Ilu z was było mentorami początkujących z dobrym skutkiem?
Chyba od tego trzeba zacząć. Bo tylko teoretyzujecie, co komu wcisnąć.
Umiecie kogoś zmotywować do nauki, po za stwierdzeniem "bo z tego języka będzie hajs"?
Wszystko co jest dla was oczywiste, dla początkujących to czarna magia.
Odpowiedzcie sobie. Ile czasu trzeba trenować programowanie, zanim zostanie się profesjonalistą? Jakie etapy trzeba przejść, żeby kimś takim zostać?
Po tych pytaniach można odróżnić teoretyków od realnych mentorów.

Frankfurterium   10 #15 26.04.2015 12:25

JavaScript jest bardzo fajny, potężny i szeroko używany, ale istnieje problem kiepskiej jakości materiałów do nauki. Większość dotyczy "partyzanckiego" tworzenia fancy-efektów na stronach, część zabawy DOM-em z jQuery, a naprawdę niewiele uczy porządnego programowania (wzorce, dobre praktyki itp.) w porządnych frameworkach. Angular, React i Meteor zakładają, że wiedzę programistyczną nowy adept już ma. Po prostu programowanie (a nie zabawa) JS-em jest jeszcze strasznie młode.

  #16 26.04.2015 14:02

Nie wiem jak z innymi, ale najgorsze w nauce programowania była ta schematyczność i powtarzania do znudzenia kroków. Brak opisu działania (bo pan sam zobaczy jak napisze), brak porównania zapisu decyzji np. diagramu z kodem (bo to strata czasu) i najgorsze nauczy się pan podstaw a reszta sama przyjdzie (3 książki kilka miesięcy i dopiero coś zrozumiałem). Pierwszy język to jakiś z formalizowany (dziś polecam w tej kolejności Python, C lub Ruby). Jak bym miał kogoś uczyć zaczął bym od nauka diagramów, logiki i składni wybranego języka. Następnie prostych algorytmów z odniesieniami do diagramów i wzorów matematycznych. Potem dużo interakcji w postaci gier logicznych i zręcznościowych. Nauka dodatkowych bibliotek, parserów języka i składni, bazy danych i praca w zespole.

Książkę którą mogę polecić początkującym to: Head First Programming.
A learner's guide to programming using the Python language. Autorstwa: David Griffiths, Paul Barry a wydanego przez O'Reilly Media. Brak polskiego tłumaczenia (Helion zaspał). Książka uczy jak myśleć jak programista, a nie nauki składni (to jest dodatkiem do całości). Składni Pythona można nauczyć się z Head First Python lub lepiej z Learning Python. Powerful Object-Oriented Programming Marka Lutza (jest znośne tłumaczenie Helionu).

Rower1985   6 #17 26.04.2015 14:04

@Anonim (niezalogowany): Dobrze mówisz.
U mnie na uczelni też uczono i dalej uczą Pascala. Pascal miał nauczyć algorytmicznego, matematycznego i logicznego myślenia, wyrobić pewne nawyki w pisaniu kodu. Dzisiaj kodowanie głównie sprowadza się do "gotowców" stosowania gotowych bibliotek i funkcji czy wrzucenie formatki na formę i przypisaniu zdarzenia, a wyznaczenie 15 liczby pierwszej stanowi dla 5-letniego programisty nielada problem.

TomaszK-Poz   8 #18 26.04.2015 16:07

@Frankfurterium: JavaScript potężny? Jest to bagno, w którym łatwo popełnić błąd. Wcale nie jest potężnym językiem, jest w miarę dobry do pewnych zastosowań, ale nie chciałbym w tym pisać dużej aplikacji.

Autor edytował komentarz.
TomaszK-Poz   8 #19 26.04.2015 16:22

Ja uważam, że w klasach nieprofilowanych nie powinno się uczyć programowania, bo to BZDURA. Po pierwsze, części to zupełnie nie obchodzi, większości nie jest to potrzebne. Po drugie: można to zrealizować na znacznie wyższym poziomie na kółkach zainsteresowań (z małą odpłatnością).

Za to można by wprowadzić program: wykorzystanie technik informacyjnych, tam mogłyby być realizowane ćwiczenia z prawidłowego formatowania dokumentu, np. napisanie cv, wniosku do urzędu, wykorzystanie arkusza kalkulacyjnego do wyliczenia podatku, kosztu kredytu, wyszukiwanie informacji, przygotowanie wizytowki w inkscape, wydruk seryjny.
Pokazanie jak sobie radzic z kompem, z nowymi aplikacjami a nie wykucie edycja/formatuj trzecie z góry.

Nauczanie programowania na zasadzie klepania jezyka to bezsens.
Trzeba pokazac na prostym przykładzie proces: definicje zalozen, projektowanie struktury programu i danych i dopiero pisanie programu.

W necie widziałem fajny, krotki przykład aplikacji w Pythonie, która cyklicznie odpytywala serwis przedsiębiorstwa komunikacyjnego pod kątem autobusu danej linii, otrzymywala jego wspolrzedne GPS, wyliczala odleglosc od domu i wyswietlała alarm, że autobus jest tuz tuz.
Przy okazji można przemycić wiedze o zmiennych, procedurach, etc. Jak się zachęci mlodziez, sama będzie szukac.

Te nauczanie to taki potworek jak portal dla bezdomnych. I później jest jeden z drugim po technikum informatycznym i nie może sobie poradzić z WiFi,

Autor edytował komentarz.
enedil   9 #20 26.04.2015 16:43

Ruby i Python są pozornie podobne, do czasu gdy odkrywasz potęgę domknięć leksykalnych. Ruby jest znacznie potężniejszy niż Python, m.in. dlatego, że czerpie garściami z Lispa.

Frankfurterium   10 #21 26.04.2015 18:16

@TomaszK-Poz: "JavaScript potężny? Jest to bagno, w którym łatwo popełnić błąd. "

Jak w każdym. A że edytor nie podpowie składni? Tak samo jest w przypadku innych dynamicznie typowanych języków na ogół uważanych za fajne i przyjazne (Python, Ruby). Tak czy siak - frontendy webowych (nawet całkiem sporych korpo-systemów z javowym backendem) ostatnio mocno mocno idą w JS (Angular, React), pojawia się też coraz więcej frameworków izomorficznych. Dodatkowo wszystko prawie zawsze ładnie wygląda na przeglądarkach mobilnych.

Sam pracuję w javowym backendzie, ale IMO przyszłość frontendu jest już przesądzona.

TomaszK-Poz   8 #22 26.04.2015 18:33

@Frankfurterium: Jak jak w każdym? jak w np. C# masz typowanie statyczne, wymagane parametry, adnotacje i inne przydatne rzeczy. Już na etapie kompilacji wychwytujesz podstawowe błędy. Linq tez ulatwia sprawę.
W JS latwiej przepuscic babola, który nawet nie zakrzyczy do czasu. Podpowiedź składni to najmniejszy pikus.
No chyba ze znasz jakies dobre IDE, które zapewnia to dla JS.

" frontendy webowych ... mocno idą w JS" - a w co mają iść w Webie jak tylko ostał się JS? Nie ma nic innego, ale ta to jest, jak się nie ma, co się lubi, to się lubi co się ma.

"Dodatkowo wszystko prawie zawsze ładnie wygląda na przeglądarkach mobilnych" - taaa jak jest najnowsza. Jak nie, zaczyna się szukanie.

  #23 26.04.2015 18:36

Macie tu fajny test:
https://gist.github.com/jorin-vogel/2e43ffa981a97bc17259

Które z tych odpowiedzi możecie pokazać początkującemu i przedstawić w zrozumiały sposób jak działają?

__Tux__   13 #24 26.04.2015 19:05

@TomaszK-Poz #18: W JS można popełnić błąd jak wszędzie, tyle że nie zawsze błąd jest widoczny od razu. Wiele rzeczy dzieje się tam pod maską, co może być plusem i minusem. O wadzie już wspomniałem, a plus jest taki, że możesz zrobić coś na parę sposobów, kod może być krótki i dostosowany do potrzeb. Nie ma przymusu robienia czegoś w jeden konkretny sposób. Zawsze, jeśli daje się ludziom wybór, to znajdą się i tacy, co wybiorą źle. To, że czasem ktoś źle dobierze kilka konstrukcji, to niestety wina tej osoby.

  #25 26.04.2015 19:28

@Frankfurterium: używasz takiego edytora jakiego chcesz. Ja zacząłem od notepada (bez bajerów pisałem proste strony internetowe), ale później nauczyłem się Emacsa, a skończyłem z Vimem. Każdy ma podpowiadanie, auto uzupełnianie, kolorowanie składni, czy wzorce. Języki, które są obsługiwane przez rozszerzenia to: AWK, Bash, Perl, Python, Ruby i wiele innych. Chyba nie chcesz powiedzieć, że potrzebuję armaty pokroju VS, Eclipse czy inne środowisko programistyczne by zacząć się uczyć. Ja na początku pisałem programy na kartce bo komputera nie posiadałem, potem je przepisywałem u kuzyna.Potem to samo było w technikum, programowanie i zaliczenie na kartce, bazy danych też tak zaliczałem. Komputerów było za mało, był problem z ćwiczeniami a i tak jakoś załapałem o co chodzi. Dopiero później nauczyłem się robić większe rzeczy dzięki samodyscyplinie, bo na studiach było sami państwo w domu poćwiczą.

damian2d   5 #26 26.04.2015 19:41

@enedil: ale python jest bardziej czytelny, lepszy do nauki. poza tym pythona wykorzystasz wszędzie od programowania elektronik po serwery a na grafice kończąc. Dzięki jit psyco jest(prawie tak) szybki jak ansi c. dzięki jython można pisać na maszynie wirtualnej javy a Ironpythonowi można pisać skrypty kompatybilne z .NET.

enedil   9 #27 26.04.2015 19:52

@damian2d: a teraz zauważ, że istnieje JRuby, IronRuby, a jako JIT Compiler służy Rubinus.
Rubiego można użyć we wszystkich tych zastosowaniach, które wymieniłeś. Jedynym segmentem, w którym Python wyraźnie przoduje, to obliczenia naukowe. Z drugiej strony widać dominację Rubiego w webówce.

gregory003   6 #28 26.04.2015 19:58

Panowie eksperci od wyśmiewania Pascala, a o Delphi słyszeli?
11 pod względem popularności język, popularniejszy od wspomnianych tu Perla czy Ruby. A Pascal i Object Pascal mają w sumie popularność na pozimie VisualBasic i Pythona.
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Jak dla mnie to jasno pokazuje, że lepiej się uczyć Pascala i potem przeskoczyć na Delphi niż jakiegoś Perla.

Autor edytował komentarz.
TomaszK-Poz   8 #29 26.04.2015 20:09

@gregory003: Pascal to drewno. Delphi to chwila, jak Embarcadero zrezygnuje lub się wypnie będzie pozamiatane. Podejrzewam, że to popularność to przez możliwość pisania na różne platformy, ale to dalej produkt jednej firmy.

Frankfurterium   10 #30 26.04.2015 20:12

@gregory003:
Pierwsza z brzegu wyszukiwarka ofert pracy:
Programista Delphi - 12 ofert
Delphi - 49
Programista perl - 28 ofert
Perl - 76

TomaszK-Poz   8 #31 26.04.2015 20:29

@Frankfurterium: A to nie jest tak, że stare dziadki od Delphi się wykruszają, a kupe starego kodu zostało z potworkami typu cała logika na formatce?
I gdzie się uczyć Delphi jak srodowisko jest płatne?

Autor edytował komentarz.
gregory003   6 #32 26.04.2015 20:50

I co z tego że więcej jest ofert, skoro programując w Delphi można lepiej zarobić? Gros programowania tworzonego w Delphi to soft związany z masowym przetwarzaniem danych, bazy danych, etc.

Kilkanaście tysięcy $/€ miesięcznie na stanowisku klepacza kodu to często norma dla tych programistów.

Niestety kiepska, bardzo pazerna polityka Embercadero (nowa wersja co roku, o darmowych aktualizacjach zapomnij, nowości serwowane w taki sposób, abyś przypadkiem nie przesiedział na jednej wersji RAD zbyt długo), że sytuacja wygląda jak wygląda.
Cała nadzieja w Lazarusie.

Autor edytował komentarz.
gregory003   6 #33 26.04.2015 20:51

@TomaszK-Poz: Nie nie jest tak. Nie wiem kto ci takie legendy do głowy wbił. pewnie jakiś zazdrosny klepacz Pythona na głodowej pensji.

  #34 26.04.2015 20:59

@TomaszK-Poz: Możesz zacząć od używania Lazarusa.

  #35 26.04.2015 21:07

@gregory003: Pascal, Delphi czy Visual Basic to nisza i jeden system operacyjny Windows. Nauczyć się można programować w każdym języku. Czytałem biografię któregoś z polskich informatyków będącego na emigracji, który uczył się programować w pseudo kodzie i za pomocą logiki matematycznej. Dostał pracę i zarabiał spore pieniądze kiedy inni robili w przetwórstwie i na produkcji w fabrykach przemysłowych za grosze.

Statystyki popularności zmieniają się tak często, że byle machnięcie skrzydeł muchy w Syrii potrafi zmienić paradygmat przyjmowanych programistów. Im lepiej potrafisz programować niskopoziomowo tym więcej ciekawej pracy, a reszta to tak zwana komercja. Popularność to jedno, a zapotrzebowanie i rynek wewnętrzny to co innego. Bardzo wielu uczy się dodatkowo kilku języków i na pewno nie są to Pascal czy Delphi tylko Perl, Ruby czy Python. Patrząc na ilość rosnących bibliotek, dokumentacji ogólnego przeznaczenia to jeszcze Pascalowi, Delphi czy Visual Basicowi do uniwersalności bardzo dużo brakuje.

TomaszK-Poz   8 #36 26.04.2015 22:14

@gregory003: Kilkanaście tys EUR - możesz podac linka do jakiejś z ofert?

orajo   3 #37 26.04.2015 22:30

Dyskusja zeszła głównie na temat pierwszego języka i ogólnie ich popularności, ale chyba nie o to chodziło autorowi. Wpis ciekawy, ale bardzo pobieżny i tylko z punktu widzenia programisty. Pozwolę sobie dlatego dorzucić coś od strony zarówno programisty jak i biznesowej.
W przypadku pracy nad nowym softem ważne jest:
- oczekiwanie klienta, szczególnie jeśli ma gotowa platformę serwerową na której ma pracować system (np. Linux eliminuje (na razie) C#), albo ma wyszkolonych pracowników (administratorom Windows może być trudniej sprzedać z sukcesem aplikację wymagającą linuksa. Czasami też chce dalej sam rozwijać system i ma ludzi od jakiejś technologii.
- budżet klienta - aplikacja to nie tylko język, to również OS, bazy danych, serwery aplikacyjne, szyny danych, silniki workflow itp. A licencje na Windows kosztują, licencje na technologie Oracle kosztują, itp. W niektórych projektach
licencje na wymagane (z różnych powodów) komponenty mogą kosztować kilka razy więcej niż sam napisany system. A wymagania komponentów powodują, że czasami narzucają one technologie, przynajmniej części systemu. Przykład - nie da się w Javie użyć wszystkich opcji bazy ActiveDirectory, którą załóżmy ma klient, np. nie da się napisać do niej wtyczek.
- wymagana funkcjonalność i typ aplikacji: można sobie mieć dowolne preferencje, ale nie da się napisać prosto, łatwo i przyjemnie aplikacji desktop w PHP czy Perlu (tak, wiem, że są takie projekty, ale to jak rzeźbienie w piasku). Najbardziej uniwersalny pod tym względem jest .NET (C# i powiązane), bo można napisać prawie wszystko - od WWW poprzez desktop, rozproszone aplikacje w chmurze i aplikacji embeded). Ale to oczywiście też zależy od sprzętu. Wiele systemów embeded ma środowiska pod C++, inne pod Javę. Java też jest bardzo uniwersalna, ale desktop w Javie nie obejmuje wszystkich typów projektów (aplikacje Win8 - cokolwiek o nich nie myśleć - nie da się) czy gier (nie siedzę w tej branży, ale poza Minecraftem nie znam innych przykładów). Za to w Javie ta sama aplikacja desktopowa (zachowując odpowiednie rygory) uruchomi się bez problemu pod Linuksem. Co by nie mówić tzw. wrażenia z użytkowania aplikacji desktop w .NET są dużo wyższe niż w Javie. No a jeśli projekt zakłada napisanie specjalistycznej aplikacji np. do przetwarzania ogromnych danych w klastrze obliczeniowym - szukamy specjalistycznych narzędzie i języków.
- środowisko pracy: wspominałem w pierwszym punkcie, ale ważne jest np. ty czy aplikacja będzie hostowana (VPSy Windows są dużo droższe i mniej popularne), w chmurze (np. Google wspiera (chyba tylko) Pythona, a MS Azure daje opcje odpalenia serwera z Linuks) itp.
- rynek pracownika: technologie dobieramy też do możliwości zapewnienia wykwalifikowanej kadry. Jeśli mamy czas i pieniądze, to można kazać ludziom uczyć się nowego języka. Jeśli nie - piszemy w tym co umiemy (pod warunkiem, że się nadaje). Kolejna kwestia to koszt pracownika - można to różnie oceniać, ale tak czy siak programista PHP jest często tańszy (w sensie oczekiwanej pensji) niż Java czy .NET o tych samych kwalifikacjach - staż i doświadczenie. Również, że względu na mniejszy zakres zastosowań języki skryptowe łatwiej jest opanować (mniej frameworków i/lub standardowych bibliotek). A więc okres osiągnięcia przez pracownika wymaganych do projektu kompetencji jest krótszy.
- frameworki - w zasadzie niektóre farmeworki są już tak rozbudowane i wnoszą tyle do standardowej struktury języka, że same stanowią odrębne języki (patrz RoR). Jeśli mamy już istniejący system w PHP z ZF2 to dla programisty Symfony równie dobrze może być napisany w Perl. Widać to szczególnie dobrze z Javie, gdzie mnogość różnych frameworków z różnymi paradygmatami programowania jest ogromna. Z kolei w .NET tych podstawowych frameworków jest mniej, co raczej stanowi zaletę niż wadę. Łatwiej opanować Razor i ASP.NET niż GWT, JSP, JSF, Velocity itp. Podobnie w JS. Obecnie podstawowe pytanie nie dotyczy czy zna się JS tylko jQuery i AngularJS.

Można by tak jeszcze długo: czy projekt jest nowy czy stary, czy dla klienta zagranicznego czy polskiego (ma to znaczenie, np. w Polsce jest prawie zerowa popularność rozwiązań softwarowych IBM, a w stanach IBM jest już znacznie bardziej popularny). Kolejny wazny zakres to apliakcje mobilne, gdzie producenci i OS definiuje język, choć z wyjątkami (np. Xamarin i podobne technologie).

Poza językiem i frameworkami ważny jest też dobór bibliotek i komponentów. Nie jest to temat może aż tak ważny, ale nie można go traktować lekceważąco, bo źle dobrany biblioteka komponentów GUI możne poważnie pogrążyć projekt - w końcu jak cię widzą tak cię piszą :-)

mikolaj_s   14 #38 26.04.2015 22:32

@Astis: Użycie Pascala nie ma nic wspólnego z z podstawą programową, a język ten dalej jest obecny w szkołach. Tym bardziej, że na maturze z informatyki jest jednym dopuszczonych. To raczej zależy od nauczyciela co umie i co uważa za lepsze.

@__Tux__ Nie wszyscy nauczyciele znają w miarę dobrze inny język niż Pascal. Ale i tak jak piszesz nie chce im się pewnie zmieniać sposobu uczenia.

@Berion Zależy gdzie się uczyłeś. Problem w tym, że na konkursach można używać tylko C, C++ i Pascala. Na maturze dochodzi jeszcze Java. Raczej trudno aby uczyć innego języka. A że dwa pierwsze są dość trudne dla początkującego to Pascal ciągle jest w użyciu. Dramat polega na tym, że nie można używać innych prostszych języków, jak choćby Pythona, czy JS.
Poza tym gdybyś naprawdę był zainteresowany to skorzystałbyś nawet z tego.

TomaszK-Poz   8 #39 26.04.2015 22:52

@orajo: Nie kusiło was, aby do emb i dektopu uzyć QT?

mikolaj_s   14 #40 26.04.2015 22:57

@#r2d2#: W gimnazjum uczy się programowania, chociaż na lekcjach tylko Logo itp. Ale są jeszcze kółka, ktoś w końcu bierze udział w tych olimpiadach gimnazjalnych.
Na uczelni raczej powinni darować sobie Pascala, chociaż znajomość kilku języków nawet jeśli nie wszystkie się używa jest rozwijająca dla programisty. Chętniej widziałbym tu jakiś język funkcyjny jako dokładkę do tradycyjnych obiektowych.

  #41 26.04.2015 23:25

@mikolaj_s: A do czego komu matura z informatyki?
Już lepiej rozszerzoną z matematyki. Całki się bardziej przydadzą na studiach niż obliczanie pola koła w Pascalu.

ilili   8 #42 27.04.2015 00:03

aa flame war czas zacząć...

Po pierwsze wyrażenie "wygoda PHP" to jakiś nieśmieszny żart, ten język to okropny potworek z takimi wadami wrodzonymi że nawet najbardziej zatwardziały przeciwnik aborcji z litości upie... uciął by mu główkę szpadlem, tuż po narodzinach... Niestety trafiło na jakiegoś fetyszystę i wychował jak swoje... I tak się śmiesznie składa że jest to język wybierany tylko przez tych którzy o programowaniu wiedzą nic! Czyli całkiem ogromne grono ludzi...

Po drugie, porównywanie języków programowania ma co najmniej dwa główne wymiary. Jeden to taki w którym bierzemy pod uwagę środowisko, społeczność, ilość bibliotek i frameworków, powszechność występowania w biznesie czyli to wszystko co się wiąże z tym co się dzieje dookoła samego języka i nie ma z nim samym za wiele wspólnego. I w takich ujęciach zawsze wygra Java, .NET, C++. I nie ważne jakie te języki same w sobie są. Taka sytuacja jest z PHP ma on taką popularność że w tym ujęciu nie ma znaczenia że został napisany przez szympansa na oślep stukającego w klawiaturę...

Potem jest jeszcze kilka mitów krążących po Internecie, łącznie z tym wpisem a mianowicie wydajność. Nie istnieje taka cecha języka. Przynajmniej nie w dzisiejszych czasach. Dziś języki skryptowe kompilują się w locie i są w 99% równie szybkie co C. Poza tym kilka procent wydajniejszy program nie jest wart poświęcenia na napisanie go w języku niskiego poziomu kilkukrotnie większej ilość roboczogodzin... A tam gdzie potrzeba ekstremalnie wysokiej wydajności można zastosować wstawkę C lub ASM a i tak w 99% procentach przypadków jest już na to biblioteka.

Jak program ma być wydajny to musi być dobrze napisany! Język nie ma znaczenia. Bo jak się wie jak działa procesor, a wielu Januszy uważa że taka wiedza jest im nie potrzebna, to wie się jak napisać program i jak maszyna wirtualna go wykona...

Albo to że trzeba dobrać język do zadania. Tzn. to prawda, bo jeśli przez 30 lat ludzie pisali skrypty w Pythonie to powstało ich tak dużo i stanowią taką wartość że żaden nowy, nawet dużo lepszy język nie jest w stanie konkurować.

Jeśli jednak skupimy się, czysto akademicko, na cechach samego języka i i tak zawsze wyjdzie że absolutnym i bezapelacyjnym zwycięzcą jest Ruby. A dlaczego? Ktoś mógłby zapytać. Odpowiedź pewnie zaskoczy wielu - bo jest zajebiście prosty! Ile razy patrzę w Javę i te wszystkie konstrukcje, znaczki, kod w komentarzach, pierdylion struktur danych... Albo w JS, milion poziomów zagnieżdżonych nawiasów, klamer, kwadratowych nawiasów, kombinacji nawiasów a do tego bardzo okrojone i ubogie struktury danych...

__Tux__   13 #43 27.04.2015 08:36

@ilili: "Potem jest jeszcze kilka mitów krążących po Internecie, łącznie z tym wpisem a mianowicie wydajność. Nie istnieje taka cecha języka. Przynajmniej nie w dzisiejszych czasach. Dziś języki skryptowe kompilują się w locie i są w 99% równie szybkie co C. Poza tym kilka procent wydajniejszy program nie jest wart poświęcenia na napisanie go w języku niskiego poziomu kilkukrotnie większej ilość roboczogodzin... A tam gdzie potrzeba ekstremalnie wysokiej wydajności można zastosować wstawkę C lub ASM a i tak w 99% procentach przypadków jest już na to biblioteka." Coś w tym jest. Języki skryptowe mają pewien narzut czasu wykonania związany ze wspomnianą kompilacją. Jeśli jest on zaledwie ułamkiem w całości programu, to nie ma sensu się tym przejmować. Jednak jeśli dużą część programu stanowią konstrukcje kompletnie niezwiązane z samym algorytmem, to trzeba się zastanowić nad doborem narzędzi.
@orajo: Rozważania na temat wyboru frameworków czy ludzi do zespołu są już na etapie innym, niż nauka języka. W każdym razie każdy patrzy na języki inaczej: sam programista, menedżerowie w firmach, projektanci. Każdy z nich ma inne zasady na jakich powinno dobrać narzędzia.

Wspominam o narzędziach, bo języki programowania to narzędzia w rękach zawodowców. Jak mechanik wie, co się w samochodzie psuje i jakiego klucza do tego użyć, tak programiści często stają przed niełatwym wyborem języka programowania. Wspomniana wydajność dziś ma na tyle małe znaczenie, że nie zawsze widać jak język sprawdzi się w danym algorytmie.

@TomaszK-Poz: "I gdzie się uczyć Delphi jak srodowisko jest płatne?" - To też inny problem. Z jednej strony ciężko adeptowi programowania rozpocząć naukę, kiedy musi płacić za środowisko, książki, system itp. Nie każdego stać, a może mieć wielki talent, który pozwoli mu zarobić dobre pieniądze. Z drugiej strony są ludzie, którzy wszystko chcieli by za darmo. Nawet w internecie szukają darmowych tutoriali. Ludzie... są naprawdę dziwni :-D .

anakkin   6 #44 27.04.2015 09:32

Do kryteriów wyboru języka dodałbym też ergonomię pracy. C# wydaje się być (subiektywnie) ciekawym językiem, może śmiało z Java'ą konkurować. Niestety (?) dużo sprawniej, wygodniej, szybciej używa mi się Eclipse/IntelliJ IDEA niż Visual Studio, przez co dostaję drgawek, gdy muszę coś dodać w kodzie C#.

mikolaj_s   14 #45 27.04.2015 10:38

@Anonim (niezalogowany): "A do czego komu matura z informatyki? "

A po to, aby na studiach nie było płaczu gdy zaczyna się uczyć programowania. Matematyki należy się uczyć również. Niektóre uczelnie uwzględniają maturę z informatyki dodatkowymi punktami.

mikolaj_s   14 #46 27.04.2015 10:50

@TomaszK-Poz: "Ja uważam, że w klasach nieprofilowanych nie powinno się uczyć programowania, bo to BZDURA."

I się nie uczy. Uczniowie mają jedynie elementy algorytmiki, a umiejętność planowania etapów w swojej pracy i uświadamianie sobie jak się działa przyda się każdemu. ;)

Co do JS to skoro jest popularny i nie ma odwrotu od jego używania, to dlaczego mimo, że ma mankamenty miałoby się go nie uczyć. A na pomoc w pracy z JS idzie już TypeScript. Ten twór Microsoftu chce zaadoptować Google i być może stanie się standardem.

@ilili:
"Potem jest jeszcze kilka mitów krążących po Internecie, łącznie z tym wpisem a mianowicie wydajność. Nie istnieje taka cecha języka. "

Chciałoby się, ale tak nie jest. W szczególności Ruby jest właśnie mało wydajny. Niestety za wygodę pisania płaci się. JS jest najwydajniejszym z języków dynamicznie typowanych, a w połączeniu z asm.js zbliża się do Javy. Po to się wymyśla takie rzeczy jak HipHop dla PHP, aby przyspieszyć wykonywanie kodu. Jak uważasz, że jest inaczej to udowodnij to pisząc kod na: http://benchmarksgame.alioth.debian.org
W zastosowaniach sieciowych opóźnienia języka nie mają znaczenia bo większe mają opóźnienia sieciowe i odczyty z baz danych.

Autor edytował komentarz.
Berion   14 #47 27.04.2015 11:02

@mikolaj_s: Ale jaki jest sens uczenia w dzisiejszych czasach bezużytecznego języka? Byłem i mnie ten fakt skrajnie zniechęcał. Jeśli dla kogoś nauka jest za trudna to może wziąć się zawsze za łopatę (strasznie mnie irytuje to równanie w dół).

Autor edytował komentarz.
awangardowy   7 #48 27.04.2015 13:17

a PHP i wszystkie frameworki to co?
nadal jest pełno ofert i projektów.
javaScript? Ruby On rails ?

ani słowa o bazach danych i SQL-ach, a tak naprawdę: języków jest wiele, ale bazy danych wszędzie są podobne. Kiedyś słyszałem, żeby programowanie zacząć od razu od... jak najszybszego przejścia do baz danych. I coś w tym jest: można znać język X w stopniu 3/10 a bazy danych w stopniu 9/10 - i teoretycznie będzie się miało bardzo sytuację, bo b.danych są wszędzie a dużo osób tego nie ogarnia.

wszyscy olewają bazy danych (mało który tutorial od początku tego uczy), a później brakuje umiejętności. Przyjdzie ktoś kto ogarnia i najwięcej zarobi na back-endzie.

jeszcze jest takie coś:
czysty język vs frameworki (lub kolekcja bibliotek).
uczenie się "czystego języka" powinno trwać 3-4 dni, natomiast później najlepiej jest przejść jak najszybciej w jakieś fajne frameworki / biblioteki. Prawie nic dzisiaj nie da się fajnego napisać "od zera", dlatego ktoś kto skupia się na frameworkach dobrze wychodzi na tym. Lepiej znać framework Y z języka X niż samą teorię języka X.

dużo osób też miesza naukę programowania z rozwiązywaniem problemów matematycznych, co jest błędem. Matematyka w językach programistycznych najczęściej jest zamknięta w bibliotece/kilku bibliotekach. Jak ktoś potrzebuje matematyki, to wtedy właśnie _te_konkretne biblioteki wybiera. Ale można inne sobie przeanalizować, np. od razu przejść w biblioteki kryptograficzne, GUI, graficzne, czy pełne różnych narzędzi. Rozwiązywanie problemów matematycznych w języku programowania nie jest nauką programowania, ale programowaniem konkretnej rzeczy (można wybrać inną rzecz).

Autor edytował komentarz.
TomaszK-Poz   8 #49 27.04.2015 13:33

@awangardowy: Eeee dzięki tworom jak hibernate czy linq w podstawowych działaniach nie trzeba znać sqla. W bardziej rozbudowanych działaniach i optymalizacji - tak, ale z kolei upychanie logiki do bazy to zły pomysł, chyba że wiemy co robimy (świadomy wybór dostawcy bazy, przywiązanie).
Sam niedawno popełniłem produkt, którym dużą cześć logiki miał w MSSQL i niby fajnie ale już tego nie przeniosę na postgresql (teoretycznie, bo nie ma potrzeby jak na razie), robiąc projekt w tsql, c#, js po prostu wszystko mi się miesza. Już lepiej uzyc bazy tylko do trzymania danych, a reszte napisac w jakims jezyku. Co do frameworkow - zgadzam sie w 200%. Jedynie na luksus olania frame maja szanse programiści embedded ci niskopoziomowi (atmele etc).
Osobiście nie radzę zaczynać od baz danych, sql to specyficzny jezyk, nieustandaryzowany, można się go nauczyć przy okazji. Pisanie w nim czegoś większego to udręka i przywiązanie do jednego dostawcy.
Bazy danych nie sa wszędzie (mam na myśli klasyczne, nie jakieś popierdółki, które można zastąpić plikiem xml), a i czesc z nich można zastapic nosql.

Najlepiej uczyć się w jakimś konkretnym projekcie do zrobienia i do zakończenia.

awangardowy   7 #50 27.04.2015 13:40

@TomaszK-Poz:

ja widziałem tutoriale w których przez pierwsze 20 stron/slajdów/minut nie pojawiło się słowo "bazy danych". Masakra jakaś. Jak ktoś ignoruje tę tematyke, to wpada w sidła złych nawyków i pojawia się za duża ignorancja wobec tych wszystkich SQL-ów. Tak samo są tutoriale w których nie mówi się nic o najpopularniejszych frameworkach danego języka lub bardzo późno analizuje sie najprzydatniejsze biblioteki.

Autor edytował komentarz.
TomaszK-Poz   8 #51 27.04.2015 13:43

@mikolaj_s: mikolaj_s: Nie mówię, że nie, w web jest nieodzowny, ale jak ktoś chce pisać na mikrokontrolery czy poza web, to js jest mu potrzebny jak umarłemu kadzidło.
A typescript to taka proteza, podobnie jak scss - i tak należy znać js i css.
Akurat sam js jest prosty, gorzej z kompatybilnoscia miedzy przeglądarkami bo można mieć niezłe wtf, gdy chrome nie obsługuje przydatnej, standardowej funkcji z jquery a okazuje się to bug od lat.
Generalnie dobrze znac po jednym jezykow, każdy o roznych paradygmatach, bo to poszerza horyzonty. Ja po nauce js poważnie zastanawiam się nad pythonem (nie wiem, na ile sa podobne pod względem filozofii, bo zapis -to wiem), a znając c# czuje, ze z java czułbym się jak ryba w wodzie.

TomaszK-Poz   8 #52 27.04.2015 13:47

@anakkin: Poszukaj jakiego pluginu z mapowaniem klawiszy z tych programów. Ew. możesz korzystać z Sharpdeveloper, tam te mapowania powinny być.
Jeżeli chodzi o c# to uważam, ze przegonil jave (w sensie konstrukcji językowych), z bibliotekami roznie, ale te najwartościowsze sa już dawno przeportowane. Mniejszy wybór to plus :-D

gregory003   6 #53 27.04.2015 13:53

@?•? (niezalogowany):
„Pascal, Delphi czy Visual Basic to nisza i jeden system operacyjny Windows.”
A są inne systemy?

W programowaniu duże pieniądze leżą tylko w korporacjach. A żadna z nich kijem nie tyka ani Perla, ani Ruby, ani Pythona. W segmencie enterprises liczy się tylko: Java, C, C++ i Delphi właśnie. Nie żadne Perle czy Pythony.

Pythonem możesz się bawić jeśli jesteś linuksowym maniakiem i robisz to w wolnym czasie. Żadne korpo tego nie używa.
Ruby? Co niby poważnego na tym powstało? Znasz jakieś poważne korpo które zatrudniałoby programistów Ruby i prowadziłoby w tym kluczowe projekty? Może jakiś CRM-ik na tym powstał.

TomaszK-Poz   8 #54 27.04.2015 13:55

@awangardowy: No ale powiedz, gdzie przy przetwarzaniu sygnałów, grafice 3d, mikrokontrolerach potrzeba jest baza danych i to w wersji sql?
Ignorujac SQL nie wpada się w sidla złych nawykow, to kolejna technologia i tyle. A sam sql jest popieprzony. Uwazam, ze na nauke przyjdzie czas niejako przy okazji, bo jezyki te nie sa trudne, a uczyc się konkretnego z dbms to porazka, bo co ? tsql psql .
Jak te tutoriale były nie na temat korzystania z sql, to jaka porazka?
Do prostych operacji w bazie masz w bibliotekach gotowce od lat czy to w vcl czy .net.
Programowanie niejedno ma imię, i taki gość wymiatacz od js/html/css lub od vhdl który kosi równo kasę nie musi wiedzieć o istnieniu sql.

Autor edytował komentarz.
gregory003   6 #55 27.04.2015 13:55

@TomaszK-Poz: Owszem, mogę. Ale chyba domyślasz się że tylko oferty zagraniczne? W Polsce menedżer projektu z doświadczeniem tyle nie zarobi. W USA czy Niemczech dobry klepacz kodu owszem.

Autor edytował komentarz.
TomaszK-Poz   8 #56 27.04.2015 14:01

@gregory003: rzuc oferta, z ciekawości poczytam. skoro z zachodu do nas przychodzi to i przyjdzie do nas

ilili   8 #58 27.04.2015 14:25

@mikolaj_s: a tam gupoty Panie piszesz...
"W szczególności Ruby jest właśnie mało wydajny. "
Przykład? Bo np. Rubinius kompiluje rubiego w locie do kodu maszynowego...

"Po to się wymyśla takie rzeczy jak HipHop dla PHP"

Taaak, się wymyśla, jak się jest fejsbukiem i obsługuje się 1/4 populacji planety i jak za młodu zrobiło się appkę w PHP-ie. To potem trzeba takie rzeczy wymyślać. Poza wyjątkami, które można zliczyć na palcach jednej ręki (FB, Tweeter) to nikt inny nie napotkał na taki problem, bo walka o dodatkowe 3% wydajności kosztem 3 milionów dolarów, kiedy jeszcze można dołożyć serwer za 3 tysiące jest bezsensowna...

I jak jakaś apka w Ruby jest wolna to dlatego że programista zasadził jakiegoś babola typu brak eager load czy joina i biedna baza jest zarzynana kilkunastoma tysiącami zapytań tylko po to aby dostać się do paru asocjacji w pętli...

awangardowy   7 #59 27.04.2015 14:28

@TomaszK-Poz:

prawdopodobnie trafiamy do innych miejsc. W projektach które znam na słowo "bazy danych" wszyscy dostają kociokwiku. Nikogo nie interesują jakieś tam podstawy programowania czy rozważania matematyczno-akademickie, które połowa osób i tak często zapomniała i każdy ma jakieś braki w czymś co niby jest "podstawowe". Jak jest jakiś problem to z SQL-em, który wszystko hamuje, bo coś szwankuje na liniach klient-serwer. Raczej obydwoje mamy rację w tym co piszemy, wszystko zależy od konkretnego projektu.

Autor edytował komentarz.
TomaszK-Poz   8 #60 27.04.2015 14:41

@gregory003: to pierwsze: kontrakt na 4 miesiące a nie stala praca, na miesiąc wychodzi 10kEUR - koszty wynajmu etc? Z tego co widać, wymagają francuski i holenderski, wiec za to tez placa. Drugi tez kontrakt i na razie na 3 miechy, kasa już taka srednia (jak na kontrakt w UK), do tego wynajecie w drogim Londynie. W innych językach (java) na kontrakt tez masz podobne stawki a już lepiej znac VHDL, można w Krakowie kosic 20k/mc.

Może podaj oferty na czas nieokreślony, posada.
A jak to jest w PL, wybitnie ponad średnią?

Autor edytował komentarz.
TomaszK-Poz   8 #61 27.04.2015 14:43

@awangardowy: kociokwik w sensie nikt tego nie chce tykać? Czy ci, którzy aplikują g* wiedza z SQL? Rozwiń, proszę, bo się zaciekawiłem :-D

enedil   9 #62 27.04.2015 15:12

@gregory003: Twitter jest na Rubym.

kdm   2 #63 27.04.2015 15:38

@GBM: Artykuły naprawdę na wysokim poziomie, akurat jestem na takim etapie. Gdzie pracuję, uczę się i szukam sposobu by wejść w rynek programistyczny.

GBM MODERATOR BLOGA  20 #64 27.04.2015 15:51

@kdm: W takim razie idąc za wskazówkami tam zamieszczonymi, a jednocześnie będąc przy tym wytrwałym i ambitnym - jesteś w stanie zajść daleko :-)

mikolaj_s   14 #65 27.04.2015 18:03

@gregory003: Co do opłacalności to ja to widzę inaczej:
http://www.itjobswatch.co.uk/default.aspx?page=4&sortby=3&orderby=1&...
Pojedyncze przypadki mogą być różne. Ale ogólnie nie po to firma przepłaca za narzędzia, aby płacić więcej programistom. ;) Tym niemniej można zawodowo wykorzystywać również Pascala to fakt.

"W programowaniu duże pieniądze leżą tylko w korporacjach. A żadna z nich kijem nie tyka ani Perla, ani Ruby, ani Pythona. "

To popatrz na powyższy ranking na pierwszą stronę ;)

"Ignorujac SQL nie wpada się w sidla złych nawykow, to kolejna technologia i tyle."

A, że jest dość popularna należy jej co nie co liznąć.

@TomaszK-Poz Nie ma języka super uniwersalnego i każdy ma jakieś zastosowania. JS jest dobry w tym co robi, a że nie każdy lubi używać kilku języków do różnych rzeczy to JS zaczyna trafiać tam gdzie się da na serwery, desktopy i komórki. Nie dlatego, że jest lepszy od języków, które wypiera, ale dlatego, że człowiek jest leniwy. Zresztą jeśli dobrze pozna się JS to wcale nie jest taki straszny, a już na pewno nie gorszy niż inne języki dynamicznie typowane (no może poza Ruby, bo ten jest klasą samą w sobie). Jest tylko trochę inny, stąd niechęć piszących w tradycyjnych językach obiektowych.

@ilili
"Przykład? Bo np. Rubinius kompiluje rubiego w locie do kodu maszynowego... "
Może źle się wyraziłem. To, że korzystając LLVM wiele języków dynamicznych mocno przyspiesza to potwierdza tylko fakt, że duża szybkość JS w stosunku do innych języków dynamicznych bierze się z ilości pracy włożonej przez programistów przeglądarek. Ruby może mieć zbliżoną prędkość do JS, a dzięki temu również bliską kodowi Javy, ale pod warunkiem, że ktoś wreszcie dopracuje VM Rubiego. Pytanie czy każdy kod i biblioteki Rubiego da się uruchomić bez problemu na Rubinusie? A jeśli Ruby jest taki szybki jak piszesz to po co robią projekty takie jak Rubinus?

"Taaak, się wymyśla, jak się jest fejsbukiem i obsługuje się 1/4 populacji planety i jak za młodu zrobiło się appkę w PHP-ie."

Tutaj sobie przeczysz, bo jeśli HipHop ma być tylko ukrywaniem niedoskonałości algorytmicznej kodu, to czy nie powinniśmy powiedzieć tego samego o Rubinusie?

"Poza wyjątkami, które można zliczyć na palcach jednej ręki (FB, Tweeter) to nikt inny nie napotkał na taki problem, bo walka o dodatkowe 3% wydajności kosztem 3 milionów dolarów, kiedy jeszcze można dołożyć serwer za 3 tysiące jest bezsensowna... "

Nikt inny nie robił aplikacji dla miliardów użytkowników w języku dynamicznym. Gdyby to była kwestia kilku procent to nikt by sobie głowy nie zawracał. HipHop przyspieszył działanie Facebooka 50%, policzmy ile to by były kasy zaoszczędzonej na serwerach i to bez przepisywania kodu …
Tweeter z kolei zaczął używać Scali w nowych częściach serwisu, a niektóre usługi przeniósł na Javę. Myślisz, że mają takich słabych inżynierów? O ile wiem to przykładowo wydajność aplikacji w Scali może pozwolić obsłużyć nawet 6 razy większy ruch niż w RoR.

"I jak jakaś apka w Ruby jest wolna to dlatego że programista zasadził jakiegoś babola typu brak eager load czy joina i biedna baza jest zarzynana kilkunastoma tysiącami zapytań tylko po to aby dostać się do paru asocjacji w pętli..."

W większości typowych aplikacji obsługujących zapytania HTTP i pobierania danych z bazy to wydajność języka ma małe znaczenie. Większe ma stosowanie technologii i wzorców projektowych. Jak chociażby wywołania asynchroniczne, które są normą w świecie JS, a w Rubym jakoś są mało popularne.

mikolaj_s   14 #66 27.04.2015 18:12

@Berion: "Ale jaki jest sens uczenia w dzisiejszych czasach bezużytecznego języka? "
Ludzie uczą się lispa, choć wiedzą, że nigdy nie go nie wykorzystają. Tak poznaje się dobrego programistę.

" Jeśli dla kogoś nauka jest za trudna to może wziąć się zawsze za łopatę"

Pisałem głównie o młodzieży w gimnazjum, ale również może to dotyczyć pierwszych klas technikum. Nikt nie zaczyna uczyć od razu fizyki od teorii względności. Na początku nie uczysz się w zasadzie samego języka co umiejętności znajdowania i formułowania algorytmów wraz z umiejętnym doborem struktur danych. To można robić w dowolnym języku. Pewnie lepiej byłoby gdyby był to język bardziej praktyczny, ale nie zawsze ma się to co się lubi i trzeba lubić to co się ma.

TomaszK-Poz   8 #67 27.04.2015 18:42

@mikolaj_s: "Ludzie uczą się lispa, choć wiedzą, że nigdy nie go nie wykorzystają. Tak poznaje się dobrego programistę. "
Dobrego programisty poznaje się po tym, jak tworzy produkt w terminie, budżecie, z zachowaniem sztuki, z napisanymi testami i porządną dokumentacją. A nie po tym, że uczy się języka, którego nigdy nie użyje - w ten sposób marnuje pieniądze swojego pracodawcy.

Autor edytował komentarz.
mikolaj_s   14 #68 27.04.2015 20:02

@TomaszK-Poz: Z tym Lispem to był tylko przykład. Ale ogólnie nie da się być dobrym, jeśli nie ma się większych horyzontów niż tylko to co robisz aktualnie w pracy.
Poza tym uczysz się we własnym czasie, a nie czasie pracy. Nie jesteś niewolnikiem swojego pracodawcy. A języka samego może nie użyje, ale lepiej zrozumie programowanie funkcyjne, które jest już obecne częściowo w Javie i C#.

Berion   14 #69 27.04.2015 20:07

@mikolaj_s: Będę drążył temat: dlaczego? Jaki jest w tym cel? W jaki sposób ten Lisp wzbogaci doświadczenia tego programisty, który ten czas mógłby poświęcić na szlifowanie znanych sobie i używanych języków?

Berion   14 #71 27.04.2015 20:24

@enedil: Ok, to ma jakiś sens, ale w przypadku Lisp >> w tym konkretnym przypadku. ;] Pascal/Delphi jest opasły i (podobno) wolny, zastosowań dla niego w dzisiejszym świecie nie ma. Prawda? Jeśli tak to nie widzę sensu katowania nim w szkołach/na uczelniach. Nie rozumiem też, być może dlatego że jestem laikiem, jakie korzyści może mi przynieść znajomość Pascala/ObjPascala. Nie dostrzegam analogii do przytoczonej historii sklepu.

Autor edytował komentarz.
mikolaj_s   14 #72 27.04.2015 20:48

@Berion: Sądzę, że ma to sens w szczególności na początku kariery. Umysł człowieka jest skomplikowany i nie może rozwijać się tylko w jednym kierunku. Uważam, że uczenie się nieco szerzej niż specjalizacja w swojej dziedzinie powoduje wzrost możliwości i szybkości rozwoju umysłu. Tak przynajmniej twierdzą pedagodzy.
Poza tym znajomość innych paradygmatów programowania zwiększa Twoją pomysłowość przy tworzeniu nowych systemów i aplikacji. Jak myślisz po co jedni wydają, a drudzy czytają książki takie jak: "Siedem języków w siedem tygodni"
Przykładowo. Czym się zajmuje mistrz świata w kodowaniu: http://oi.edu.pl/contestants/Tomasz%20Czajka/ ?
Otóż nie jest programistą, a nie pracuje w IT. Jest finansistą i zajmuje się inwestycjami. Po co mu więc była przygoda z algorytmiką?

TomaszK-Poz   8 #73 27.04.2015 21:02

@mikolaj_s: ja bym jeszcze dodał czytanie zrodel pogramow.

enedil   9 #74 27.04.2015 23:18

@Berion: Ty pisałeś o Lispie, więc podesłałem link.
Ja także nie jestem obrońcą Javy, Pascala, czy Delphi.

Za to mogę bronić Rubiego, w.wspomnianego Lispa, czy Haskella.

ilili   8 #75 27.04.2015 23:20

@mikolaj_s: "Pytanie czy każdy kod i biblioteki Rubiego da się uruchomić bez problemu na Rubinusie? A jeśli Ruby jest taki szybki jak piszesz to po co robią projekty takie jak Rubinus?"

MRI (klasyczny Ruby) nie jest jakoś szczególnie nastawiony na szybkość, bo nie to jest priorytetem, walka o te kilka procent nie jest warta wysiłku, generalnie w wersji 1.9 i 2.0 poprawiono wydajność najważniejszych elementów, które faktycznie odstawały od peletonu i tyle. Rubinius też nie powstał po to aby być szybszym, jest szybszy niejako przy okazji tego że jest oparty o llvm.
---

"Tutaj sobie przeczysz, bo jeśli HipHop ma być tylko ukrywaniem niedoskonałości algorytmicznej kodu, to czy nie powinniśmy powiedzieć tego samego o Rubinusie?"

Nie, bo jak wspomniałem, rubius nie powstał po to być być szybkim, jego kluczową ideą jest stworzenie implementacji języka Ruby w... Ruby. Szybkość jest w spadku po llvm. HipHop powstał bo ciężko jest  przeportować dziwactwa PHP do np. Scala jak to zrobił Twitter rezygnując z Rails.

"Nikt inny nie robił aplikacji dla miliardów użytkowników w języku dynamicznym."

Nikt inny nie robił aplikacji dla tylu milionów użytkowników.

"Myślisz, że mają takich słabych inżynierów? O ile wiem to przykładowo wydajność aplikacji w Scali może pozwolić obsłużyć nawet 6 razy większy ruch niż w RoR."

Tak. Ale 99,99% aplikacji nigdy nie dobije do granic skalowalności RoR, dlatego w 99,99% przypadków lepiej jest tworzyć aplikację szybko i wygodnie i dokupić więcej serwerów. To oznacza że szybkość Ruby, Pythona czy JS jest wystarczająca i nie warto sobie nią głowy zaprzątać. A w RoR aplikacje tworzy się szybciej i przede wszystkim rozwija szybciej i łatwiej. Ile to ja już razy widziałem kobyły napisane w PHP czy .NET, których już nikt nie był w stanie ruszyć do przodu i każdy kolejny developer tylko przychodził doklejał swój kawałek crapu i odchodził... A napisanie ich w C++ jest zwyczajnie nie wykonalne, a teoretycznie, gdyby ktoś podjął taki nieziemski wysiłek to były by o 5-10% szybsze od wersji w Ruby...

  #76 28.04.2015 02:35

Nie piszcie już bo mi kicha ze śmiechu pęknie.

LinuXever   3 #77 28.04.2015 04:25

@kostek135:
#76:

You've made my "night". ;-))))

Autor edytował komentarz.
__Tux__   13 #78 28.04.2015 08:18

@kostek135: Wyszłoby lepiej, gdybyś drugą część dopisał edytując wpis :-) .

mikolaj_s   14 #79 28.04.2015 14:32

@ilili:
"HipHop powstał bo ciężko jest przeportować dziwactwa PHP do np. Scala jak to zrobił Twitter rezygnując z Rails. "

Tak dla ścisłości to w zasadzie nie zrezygnowano z RoR, a jedynie nowe elementy piszą w innych językach i chyba zmieniono jakieś kluczowe elementy dla wydajności. Po porostu się nie opłaca przepisywać. Natomiast HipHop jest o tyle dobrym rozwiązaniem, że bez przepisywania kodu uzyskano przyspieszenie.

"Tak. Ale 99,99% aplikacji nigdy nie dobije do granic skalowalności RoR, dlatego w …"
No z tym nie będę polemizował, choć moim zdaniem nie jest to jedyny tak dobry framework. W Scali wzoruje się na nim Lift, tak samo jak część składni i jest on całkiem wygodny. Również w Javie takie frameworki jak Wicket są równie dobre tyko tam jednak przeszkadza sama składnia języka.

" A napisanie ich w C++ jest zwyczajnie nie wykonalne, a teoretycznie, gdyby ktoś podjął taki nieziemski wysiłek to były by o 5-10% szybsze od wersji w Ruby..."
Trudno generalizować, wszystko zależy od aplikacji. Tworzenie serwisu REST w języku natywnym może dać znacznie większy zysk wydajności, nie bez podstaw powstają obecnie nowe framworki w C++ i Javie. Ciekawy benchmark można zobaczyć tutaj: https://www.techempower.com/benchmarks/#section=data-r10&hw=peak&test=fo...

kostek135   8 #80 28.04.2015 22:04

@LinuXever: Ehh jakiś admin/moderator nie ma poczucia "chumoru" i mi usunął wpis.

@Admin, wrzuć na luz, autocenzura była.

orajo   3 #81 29.04.2015 20:51

@TomaszK-Poz: nie, nie piszemy wiele pod desktop. A w biznesie liczy się target. Jeśli piszesz dla biznesu to liczba linuksów na desktopach jest w okolicach 0 absolutnego. Narzut na Qt jest za duży w stosunku do efektów. Po prostu nie opłaca się uczyć. Desktopowe aplikacje wielosystemowe piszemy w Javie.

__Tux__   13 #82 30.04.2015 11:34

@orajo: Jakby tak patrzeć ja Javę i Qt w kontakcie ze zwykłymi użytkownikami, to poza Minecraftem też za bardzo nie ma zbyt wielu aplikacji dla "zielonych" (Eclipse, Matlab, Visual Paradigm to aplikacje specjalistyczne, nie każdy ich używa) w Javie. Qt jest używany chociażby w Skype i telewizorach Samsunga i Panasonica. Java co prawda też jest używana we wspomnianych urządzeniach, jednak w innych elementach systemu, a nie samym GUI. W środowiskach firmowych czy aplikacjach specjalistycznych używana jest najczęściej Java.