Poszukuję języka programowania


(Quatre050) #1

Witam!

Poszukuję wysokopoziomowego(wyższego niż C++) języka do nauki. Tak po prostu dla siebie i swojej własnej przyjemności. Uczyłem się na zajęciach trochę C++, trochę Pascala, Trochę Logo i nic mi za bardzo do gustu nie przypadło. Chciałbym poznać język w którym nie będę musiał się martwić zbytnio o aspekty niskopoziomowe, a cały wysiłek poświęcić rozwiązywaniu zadania. Poznałem się z pythonem, ale nie wykazał on chęci współpracy z systemem, a także jego dokumentacja ssie. Możecie mi coś doradzić?

Dzięki z góry.


(kostek135) #2

Ze swojej strony polecę javę. Potem możesz się przesiąść na coś opartego na jvm, scala, groovy, etc. zależnie od zapotrzebowania.

PS pisałeś w c++11? Ja bym go nazwał językiem wysokiego poziomu, nie wiem o co tam musisz się martwić jak to określiłeś nisko-poziomowego? Z reguł ludzie, którzy wynoszą złe wrażenie odnośnie c++ są własnie "katowani" jakimś pomylonym tworem pod nazwą c/c++ <- co to w ogóle jest...


(Razi) #3

Dokumentacja Pythona ssie? Mi tam niczego nigdy nie brakowało. Ale dla użytkowników Windowsa ten język może być utrapieniem (pod Linuksem dużo wygodniej z tym językiem).

@up: wiele z tych "wysokopoziomowych nowości" tego języka jest tak upierdliwa, że wolałoby się w C całą obiektówkę załatwić. Co z tego, że jest super pseudo-GC, jak żeby to działało trzeba deklaracje 3 razy dłuższe pisać i potem przy zwracaniu używać dodatkowych funkcji, zamiast po prostu zwrócić. Z jednej strony fajne nowości, z drugiej kolejne dziesiątki słów kluczowych i funkcji std.

Ale popieram: uniwersalna Java, produktywna Scala (o jeszcze jeden poziom wyżej niż Java). Ostatnio czytałem o Kotlinie (język produkcji jetBrains, twórców IntelliJ IDEA), również bardzo ciekawy język do kompilacji zarówno do JVM jak i JavaScript.


(Frankfurterium) #4

IMO Python idealnie pasuje do twoich założeń, ale skoro nie chcesz...

Ruby (nie znam, ale ponoć strasznie przyjemny), go (założenia brzmią ciekawie), Clojure/F# (bo nowe paradygmaty niesamowicie rozwijają), Java/C# (bo napiszesz w nich apkę desktopową, mobilną i webową).


(Johny) #5

Java,C#,jest coś za coś,są to języki wykonywane przez maszynę wirtualną,zastosowanie sieci,aplikacje webowe,gry przeglądarkowe - java,nie są szybkie


(Razi) #6

@Johny: A o JITcie ty słyszał? ~20%, nikt tego nie odczuje na dzisiejszych maszynach. Dla aplikacji użytkowej ma to niewielkie znaczenie. A gry? Jakoś gry w Unity na Mono piszą i nikt nie płacze.


(etam) #7

Polecam Ruby https://pl.wikibooks.org/wiki/Ruby


(cinkibolek) #8

Zainstaluj darmowe Visual C# Express i się baw, może Ci podpasuje C# i .NET.

Dziwne że Ci Python nie pasuje. Dokumentacja słaba? Litości, przecież masa przykładów w sieci jest.


(Yuri20) #9

Zastanów się jeszcze raz nad tym Pythonem, bo moim zdaniem jest to język bardzo przyjemny dla początkujących. Sam zresztą jestem uciekinierem z C++ i Python stał się dla mnie rozwiązaniem na wszystko. Język ma przyszłość i dlatego lepiej porozmawiaj z 3.x niż 2.x


(Yuri20) #10

Powodzenia w pisaniu Eve Online czy OpenStack w Logo...


(Krystian Rosinski) #11

@Ravestar

Mylisz się. Zastosowanie Pythona znacząco wykraczają poza dziedzinę obliczeń inżynierskich, a porównanie np. Anacondy do kalkulatora to wielkie nieporozumienie. Podobnie jak porównanie do Incanter, który ma stanowić alternatywę dla R w języku Clojure. O ile Clojure może być dość dobrym językiem do statystki itp. to do obliczeń numerycznych się całkowicie nie nadaje. Wydajnościowo również zostaje daleko w tyle za Pythonem w tych zastosowaniach. Pandas miażdży możliwościami Incanter, a rozwój jest rzędy wielkości szybszy, a teraz gdy w wpompowano w IPythona miliony dolarów należy spodziewać się znacznego przyspieszenia prac.

Jako wysokopoziomowy język ogólnego przeznaczenia Python jest bardzo dobrym wyborem. Przykładów udanych zastosowań na dużą skalę jest sporo: YouTube, Dropbox, Instagram, Reddit, Mercurial (+ intefejs TortoiseHg w PyQt), Bitbucket itd.


(cinkibolek) #12

A czy Ty wiesz w ogóle o czy jest ten wątek? Facet chce się nauczyć programować. Czaisz? A Ty wyskakujesz o jakichś obliczeniach inżynierskich (cokolwiek masz na myśli).

Do dużych projektów też się naddaje, kolega wyżej podał kilka przykładów. Jakby to była taka lipa to dlaczego Google wybrało go i zmodyfikowane django do swojego App Engine obok Javy.

Co masz konkretnie na mysli pisząc skrypty i wykresy? Zresztą nie odpisuj, nieważne, tu chodzi o naukę programowania w tym wątku.


(Krystian Rosinski) #13

A jakie to ma znaczenie dla użytkownika? Sam Python też jest napisany w C.

Nie prawda. Szczególnie w kontekście wszelkiego rodzaju obliczeń wymagających mocy procesora. Poza tym tutaj IPython dużo ułatwia: IPCluster.

ipcluster-kernels.png

Nie musi. Duża część bibliotek nie wymaga rozszerzeń w C, by realizować skomplikowane rzeczy. Np. SQLAlchemy może działać bez rozszerzenia w C, podobnie Django. SQLAlchemy jest w ścisłej czołówce, o ile nie najlepszym rozwiązaniem w swojej dziedzinie. Podobnie Django.

Poza tym języki takie jak Clojure, Scala itd. wymagają bibliotek Javy... i wymagają do działania powoli wymierającej platformy...

Cóż z tego jak NumPy używa bibliotek typu BLAS, LAPACK, MKL i inne CUDA od lat? Na dodatek może bezpośrednio wykorzystywać funkcje napisane w Fortranie czy C. Tu nadal jest przepaść nie mówiąc już o tym, że podstawową biblioteką w Incanter jest Colt, nierozwijany od 2004 roku, który w zakresie możliwości zatrzymał się na etapie podstawowych operacji na macierzach oferowanych przez NumPy, nie mówiąc już o zaawansowanych funkcjach dostępnych w SciPy. Poza tym na horyzoncie widać już następcę NumPy o nazwie Blaze.

Jeśli poprzednio podane przykłady nie są przekonujące to polecam sprawdzić jaki język i jakie biblioteki działają w koszmarnie drogich programach do obliczeń realnych konstrukcji inżynierskich metodą elementów skończonych, od tych najmniejszych po ogromne mosty itd. Od zagadnień typu uderzenia ptaków w śmigła samolotów, po badania dynamiki największych przęseł mostowych. Jednym z takich programów jest Abaqus, który używa NumPy.

Właśnie. A w Pythonie robią. Z prostego powodu: aby zapewnić maksymalną wydajność obliczeń i maksymalną wydajność programisty. Dzięki rozwiązaniom takim jak Numba można otrzymać wydajność równą C przy pomocy prostego dekoratora @autojit.

Nie wiem skąd te rewelacje. Do przykładów podanych wyżej dorzucę np. Quora. Polecam również sprawdzić jaki system komentarzy jest najczęściej wykorzystywany w sieci. Z moich obserwacji jest to Disqus, również napisany w Pythonie. Wikipedia potwierdza.

Na koniec ciekawostka: Ostatnio na HackerNews pojawiły się dwie ankiety:

Poll: What's Your Favorite Programming Language?

Poll: What is your primary programming language?

Polecam zapoznać się z wynikami.

Ps Nie twierdzę, że Clojure jest gorszy. To bardzo interesujący i ładny język, jednak w pewnych zastosowaniach go nie widzę, np. programowanie GUI. Nie jest to język aż tak uniwersalny (jak wszystkie funkcyjne).


(Quatre050) #14

Dziękuję za pomoc. Zaiteresuje się Clojure, ponieważ jest zupełnie inne od tego co już poznałem, więc może bardziej przypadnie mi do gustu. Jak nie wyjdzie to python. Nawet spojżałem na dokumentacje i jest jakoś dziwnie lepsze niż była w mojej pamięci.

Acha, mała prośba panowie, wiem co prawda, że dyskusja jeszcze zła taka nie jest, ale byłoby fajnie gdybyście się nie pozabijali w postach o rację.