Dodatkowe języki programowania

0

Zastanawiam się nad nauką jakiegoś dodatkowego języka, obok mojego głównego czyli C#, czegoś co mogło by np. usprawnić moją pracę lub pomóc uzyskać wyższą stawkę ;) Nauczyć się czegoś, co nie będzie stratą czasu, bo np. nigdy w pracy nie uda mi się tego wykorzystać :)

Macie jakieś własne doświadczenia, jakie języki przydały się wam jako "poboczne", obok Javy/C#/C++/C czy czegokolwiek innego? Liczę na merytoryczną dyskusję :)

0

Nie wszystko to typowe języki programowania, ale też narzędzia, które warto w jakimś tam stopniu znać:

  • bat (Windows)
  • bash, sed
  • makefile, m4
  • opis gramatyk, parserów typu ANTLR
  • less (css)

Jak coś mi przyjdzie do głowy to dopiszę.

0

Python, po stokroć Python! Chciaż obecnie zajmuję się tworzeniem aplikacji m. in. właśnie w Pythonie to przez lata był to mój szwajcarski scyzoryk. Zastąpił większe skrypty shella, makefile (z odpowiednimi bibliotekami), zastąpił niemal w 100% Perla, Maxima poszła w odstawkę odkąd IPython i bibioteki naukowe Pythona są dobrze zintegrowane. Poza tym IronPython świetnie sprawdza się do prototypowania i testowania rozwiązań dedykowanych .NET. Z ciekawostek: CERN wykorzystuje IPythona jako shell do zarządzania taskami przy LHCb.

0

Python ;)
@PS Python to w cernie drugi najpopularniejszy język po C++ i większość tooli w cernie jest napisana właśnie w pythonie

0

no właśnie miałem obawy że funkcje to też są obiekty...

Możesz rozwinąć, jakie masz obawy z tym związane?

0

To może już czas wkręcić się w języki funkcyjne.

0
PS napisał(a):

Python, po stokroć Python! Chciaż obecnie zajmuję się tworzeniem aplikacji m. in. właśnie w Pythonie to przez lata był to mój szwajcarski scyzoryk. Zastąpił większe skrypty shella, makefile (z odpowiednimi bibliotekami), zastąpił niemal w 100% Perla, Maxima poszła w odstawkę odkąd IPython i bibioteki naukowe Pythona są dobrze zintegrowane. Poza tym IronPython świetnie sprawdza się do prototypowania i testowania rozwiązań dedykowanych .NET. Z ciekawostek: CERN wykorzystuje IPythona jako shell do zarządzania taskami przy LHCb.

Nad nim właśnie myślałem, a jakieś przykładowe zastosowania? :)

1

Tą grę stworzyłem w Pythonie :D

http://www.jason.gd/str/pokaz/Too_Many_Troopers_2

Bardziej w 3D to moja praca inżynierska: http://www.jason.gd/str/pokaz/Bachelor_thesis

A na pracę magisterską zrobiłem z użyciem PyQt aplikację do drukowania recept - z kodami kreskowymi, bazą danych pacjentów w SQLite itd.

Przy tworzeniu gier z wieloma obiektami niezastąpione są listy w Python'ie, nie trzeba tego tak mozolnie klepać jak w C++ :D

0

Właściwie to jak wygląda rynek programistów Pythona bo wydaje mi się, że to jakaś niszowa technologia jak na razie.
W czym ten język zastosowania znajduje?:D Ale mam na myśli takie bardziej komercyjne niż... hm dla zabawy. Ponoć Google stoi na Pythonie i GMail.

1

Tak komercyjnie to głównie Django - czyli zastosowania webowe. Na goldenline jeden gość pisał, że w swojej firmie ma "normalne" zadania z Python'ie, a nie tylko webowe, ale cóż... takie zadania to mniejszość niestety. Zawsze jak dostaję oferty pracy dla programisty Python'a, to chodzi o webowe zastosowania. Ale na szczęście nic nie stoi na przeszkodzie, by własny biznes oprzeć o Python'a ;) Ja tak przynajmniej zamierzam.

2

Pythona stosuje się do wszystkiego, od webdevu po obliczenia (zwłaszcza fizycy za nim przepadają). Bardzo często stanowi język rozszerzeń lub frontendów dla aplikacji i bibliotek. Pod względem webdevu to nie tylko django, to także np. Pyramid (chodzi na nim digg, reddit czy Dropbox), CherryPy, Flask, web2py... Django jest szybki w tworzeniu prostych stron, ale czasami brakuje mu elastyczności, dlatego z bardziej rozbudowanych frameworków często wybiera się Pylonsa/Pyramida. Wiele firm i instytucji używa Pythona jako narzędzia do automatyzowania tasków itd. jak pisałem już przy okazji wzmianki o LHCb. Brałem udział w kilku projektach, gdzie cały backend był w Pythonie, pisało się też kompletne daemony itd. Z usług Google to chociażby YouTube jest w 100% w Pythonie, co więcej, czasem nawet ślady mechaniki Pythona przeciekają przez HTTP. Zresztą nie bez powodu zatrudniają Guido van Rossuma, twórcę Pythona. Rynek pracy jest, ale na zachodzie, u nas jest jeszcze mało ofert. Z zachodnich ofert widziałem m. in. kilka ogłoszeń związanych z przetwarzaniem danych medycznych.

1

Mógłbym się nauczyć nowego języka. Tylko...
Po pierwsze, skoro umiem już jeden język świetnie, to wszystko w nim zrobię znacznie szybciej niż w nowym. A nie chce mi się tracić czasu.
Po drugie, zanim nauczę się ładnie pisać w nowym języku, to minie czas. Pierwsze programy będą słabe, 10 razy dłuższe niż mogłyby być, itp. A ja nie chcę pisać słabego kodu, bo to godzi w mój profesjonalizm.
I jak tu się zmotywować?

0
somekind napisał(a):

Mógłbym się nauczyć nowego języka. Tylko...
Po pierwsze, skoro umiem już jeden język świetnie, to wszystko w nim zrobię znacznie szybciej niż w nowym. A nie chce mi się tracić czasu.
Po drugie, zanim nauczę się ładnie pisać w nowym języku, to minie czas. Pierwsze programy będą słabe, 10 razy dłuższe niż mogłyby być, itp. A ja nie chcę pisać słabego kodu, bo to godzi w mój profesjonalizm.
I jak tu się zmotywować?

Po prostu w języku, który znasz świetnie, napisz interpreter/kompilator(do byte codu którejś maszyny wirtualnej) języka którego chcesz się nauczyć.

0

Zawsze ciekawil mnie Python, tutaj gdzie siedze jest bardzo duzy hype na niego, i jest na tyle inny od Javy i innych ktore wczesniej znalem ze mnie bardzo zaciekawil. Jednak nie bylo czasu.
W miedzyczasie zaczalem sie bawic mercurialem (dvcs, dla tych ktorzy nie znaja), ktory jest w Pythonie - to mi dalo do myslenia, ze da sie w tym pisac i jakies wieksze aplikacje. Brakowalo mi czegos w mercurialu (konkretnie w ich aplikacji webowej) no wiec postanowilem to dopisac. Po jakims czasie (troche odbijanie pileczki bo ciagle cos bylo zle albo nie Pythonistycznie) dodali to do core. No i sie nauczylem, a wcale duzo czasu nie potrzeba. Od tego czasu zainteresowalem sie roznymi innymi jezykami, i lubie sie uczyc nowych.
Aktualnie przerabiam Objective C.

1
Mój sposób napisał(a):

Po prostu w języku, który znasz świetnie, napisz interpreter/kompilator(do byte codu którejś maszyny wirtualnej) języka którego chcesz się nauczyć.

Cholernie mało praktyczne, mnie to by raczej zniechęciło do nauki nowego języka.

a mój sposób napisał(a):

Brakowalo mi czegos w mercurialu (konkretnie w ich aplikacji webowej) no wiec postanowilem to dopisac. Po jakims czasie (troche odbijanie pileczki bo ciagle cos bylo zle albo nie Pythonistycznie) dodali to do core. No i sie nauczylem, a wcale duzo czasu nie potrzeba.

No to już jest coś, gdyby mi się chciało cokolwiek robić, to może bym spróbował. ;)

2

A ja nie chcę pisać słabego kodu, bo to godzi w mój profesjonalizm.

To nie pisz wcale.

Ten nie popełnia błędów, kto nic nie robi.

0

Ad. 1) I nic by nie dało, nauczyłbyś się jak pisać interpretery w swoim języku - dobre poznanie mechanizmów języka to nie to samo co umiejętność pisania w języku (co udawadniają osoby świeżo po przeczytaniu książki - do umiejętności projektowania, programowania obiektowego, pisania czystego kodu, omijania typowych błędów nie wystarczy przeczytać książkę z gatunku XXX w 72 godziny) - MSM dzisiaj, 01:29

Że, co? Implementacja mechanizmów języka to nie dobre poznanie mechanizmów języka? I jeszcze przyrównanie z d**y do książki XXX w Y godzin? Bo to czegoś dowodzi? Nie mam pytań. Może wróć do popisywania się swoją znajomością Haskella.

"Coders at work", Joe Armstrong, strona 223, dostępne na google books http://books.google.pl/books/about/Coders_at_Work.html?id=nneBa6-mWfgC&redir_esc=y

It’s a motivating force to implement something; I really recommend it. If you
want to understand C, write a C compiler. If you want to understand Lisp,
write a Lisp compiler or a Lisp interpreter. I’ve had people say, “Oh, wow,
it’s really difficult writing a compiler.” It’s not. It’s quite easy. There are a lot
of little things you have to learn about, none of which is difficult. You have
to know about data structures. You need to know about hash tables, you
need to know about parsing. You need to know about code generation. You
need to know about interpretation techniques. Each one of these is not
particularly difficult. I think if you’re a beginner you think it’s big and
complicated so you don’t do it. Things you don’t do are difficult and things
you’ve done are easy. So you don’t even try. And I think that’s a mistake.

Przepraszam Cię somekindzie, użycie przez Ciebie słowa Profesjonalista wprowadziło mnie w błąd.

0

Jakie frustru.

1

Moim zdaniem warto się uczyć tych popularnych języków:

1.C
2.Java
3.C++
4.Objective-C
5.C#
6.PHP
7.(Visual) Basic
8.Python
9.JavaScript
10.Perl
11.Ruby
12.PL/SQL
13.Delphi/Object Pascal
14.Visual Basic .NET
15.Lisp
16.Pascal
17.Ada
18.Transact-SQL
19.Logo
20.NXT-G

A nie zajmować się jakimiś małymi perełkami, o których praktycznie nikt nic nie słyszał. :D

3
MSM antyfan napisał(a):

Że, co? Implementacja mechanizmów języka to nie dobre poznanie mechanizmów języka?

Język programowania to nie tylko zasady scopingu itd. Napisanie interpretera Pythona nie nauczy Pythona, nauczy jedynie mechaniki języka, co z właściwym dla języka podejściem do rozwiązywania problemów, opanowaniem WYKORZYSTYWANIA poznanych mechanizmów? Po co implementować coś, co można opanować podczas zdobywania realnego doświadczenia z językiem? Weźmy za przykład Haskella: implementacja jego systemu typów ma się nijak do pracy z nim, co z tego, że znasz ograniczenia? Poświęciłeś dziesiątki godzin na zaimplementowanie czegoś, co w równym stopniu idzie poznać w kilka godzin czytając standard języka, źródła GHC i dołączonych bibliotek oraz siedząc nad REPLem. Ad Python - coroutines są banalne pod względem zrozumienia działania, trudne pod względem efektywnego zastosowania i nieco wredne pod względem implementacji, powiedz Ty mi, czy po napisaniu kodu dbającego o zachowanie kontekstu ktokolwiek będzie w stanie swobodnie używać coroutines?

Od kiedy "Coders at work" jest wyznacznikiem czegokolwiek? W książce znajdziesz wzmiankę, że to tylko prywatne opinie, nie jakieś oświecone wersety. Kolejny teoretyk bez własnego doświadczenia, który popularne książki traktuje jak religię.

0
PS napisał(a):

Poświęciłeś dziesiątki godzin na zaimplementowanie czegoś, co w równym stopniu idzie poznać w kilka godzin czytając standard języka, źródła GHC i dołączonych bibliotek oraz siedząc nad REPLem.

Jak chesz zaimplementować język w celach edukacyjnych to chyba oczywiste, że będziesz korzystać ze standardu języka, natomiast własne niepowodzenia w implementacji pozwolą na wyznaczenie celów podczas czytania dostępnego kodu kompilatora/interpretera.

PS napisał(a):

Ad Python - coroutines są banalne pod względem zrozumienia działania, trudne pod względem efektywnego zastosowania i nieco wredne pod względem implementacji, powiedz Ty mi, czy po napisaniu kodu dbającego o zachowanie kontekstu ktokolwiek będzie w stanie swobodnie używać coroutines?

Dzięki tobie zaczynam szczerze w to wątpić. Mi zawsze pomaga wiedza o tym co jest o jeden poziom pod spodem, abstrachując od niższych.

BTW. Czy osoby które mnie minusowały mogłyby wpisać się w tym poście w komentach. Muszę zaktualizować swoją czarną listę.

0

@bogdans: a ty nie jestes anonimowy? Roznica taka ze twoj nick jest linkiem...

1
mięntus napisał(a):

@bogdans: a ty nie jestes anonimowy? Roznica taka ze twoj nick jest linkiem...

Nie, nie jest anonimowy. Wiadomo kim jest, jak się nazywa i co robi.

Wibowit napisał(a):

Ten nie popełnia błędów, kto nic nie robi.

Całkowita racja. Tylko, cholera, mi się nie chce. ;P

MSM antyfan napisał(a):

Przepraszam Cię somekindzie, użycie przez Ciebie słowa Profesjonalista wprowadziło mnie w błąd.

Znaczy, że jak nie chcę napisać interpretera Pythona w C#, to nie piszę profesjonalnego kodu w C#? o.O

Czy naprawdę nikt nie ma podobnego do mojego problemu z motywacją do nauki?

1

Jak się czegoś nowego uczyć, to najlepiej czegoś blisko oryginalnego środowiska.

Skoro znasz C#, to możesz się zainteresować:

  • C++ (dla programowania środowisk inne niż MS)
  • PowerShell / VBScript / batch - do automatyzacji procesów
  • IronPython - Python na .NET
  • Scala - nowy język na .NET i JVM
3
vpiotr napisał(a):

Skoro znasz C#, to możesz się zainteresować:

  • C++ (dla programowania środowisk inne niż MS)
    ...
  • IronPython - Python na .NET

Python to przede wszystkim język pozwalanący na tworzenie przenośnego oprogramowania, na podobnej zasadzie jak Java, write once, run anywhere. C++ to ni mniej, ni więcej, write once, debug anywhere. IronPython nie oferuje niczego interesującego poza możliwością ładowania modułów i klas .NET, ma też swoje ograniczenia, nie wszystkie moduły kompatybilne z CPythonem (i nawet PyPy) idzie na nim odpalić.

0
PS napisał(a):
vpiotr napisał(a):

Skoro znasz C#, to możesz się zainteresować:

  • C++ (dla programowania środowisk inne niż MS)
    ...
  • IronPython - Python na .NET

Python to przede wszystkim język pozwalanący na tworzenie przenośnego oprogramowania, na podobnej zasadzie jak Java, write once, run anywhere. C++ to ni mniej, ni więcej, write once, debug anywhere. IronPython nie oferuje niczego interesującego poza możliwością ładowania modułów i klas .NET, ma też swoje ograniczenia, nie wszystkie moduły kompatybilne z CPythonem (i nawet PyPy) idzie na nim odpalić.

Przenośnie możesz napisać w C++ (Boost, wxWidgets, Qt, #ifdef, makefile), Python, PHP, C# (Mono), Java, Pascal (FPC), JavaScript (Adobe AIR)...

Pod warunkiem że jest to Twoim priorytetem.

Chyba najsłabiej z tego co słyszę jest to o dziwo zrobione w Javie - program może być nawet nieprzenośny między dwoma serwerami aplikacji, nie mówiąc już o różnicach między smartfonem a PC.

0

Chyba najsłabiej z tego co słyszę jest to o dziwo zrobione w Javie - program może być nawet nieprzenośny między dwoma serwerami aplikacji, nie mówiąc już o różnicach między smartfonem a PC.

Jakieś porównania? Android to nie JavaSE, a jeżeli wykorzystujesz API, które jest tylko w jednym serwerze aplikacyjnym to czemu się dziwisz?

0

Porownania? Aplikacja webowa ktora korzysta z providera JPA dostarczanego z serwerem aplikacji, uruchamiana na glassfishu i na jbossie. Milego debugowania ;d

0
Wibowit napisał(a):

Chyba najsłabiej z tego co słyszę jest to o dziwo zrobione w Javie - program może być nawet nieprzenośny między dwoma serwerami aplikacji, nie mówiąc już o różnicach między smartfonem a PC.

Jakieś porównania? Android to nie JavaSE, a jeżeli wykorzystujesz API, które jest tylko w jednym serwerze aplikacyjnym to czemu się dziwisz?

Powtarzam tylko to co słyszałem.
A są jakieś przenośne (ustandaryzowane) API do serwerów?
I najważniejsze - czy wystarczające?

0

JavaEE to zbiór API.

mućka:
A co jest przyczyną błędów? Błędy w aplikacji, serwerze aplikacyjnym, czy też może np nieścisła specyfikacja JavyEE?

Mój szefo chciał uwspólnić kod między JavąME, a Androidem i w zasadzie JavąSE. To tak jakby np wziąć trochę libek z Qt 1, trochę z Qt 2, Qt 3, trochę z GTK, no i jeszcze coś innego i chcieć to pogodzić między sobą.

1 użytkowników online, w tym zalogowanych: 0, gości: 1