Skocz do zawartości
Macko_da_Gama

Programista front-end, zmiana branży

Pomocna odpowiedź

Nie rozumiem w ogóle tych zarzutów deshipa.
Są Ci, którzy wyznaczają kierunek i są Ci, którzy podążają za nimi. Nie każdy siedzi i czeka na gotowca.

Udostępnij ten post


Link to post
Share on other sites
6 godzin temu, Otar napisał:

Nie rozumiem w ogóle tych zarzutów deshipa.

Których "tych zarzutów" dokładnie, bo nie przypominam sobie zarzucania komukolwiek czegokolwiek w tym wątku?

Udostępnij ten post


Link to post
Share on other sites

@deshipu tych wszystkich dotyczących utrzymywania programów.

Udostępnij ten post


Link to post
Share on other sites
Dnia 23.04.2020 o 18:03, Otar napisał:

@deshipu tych wszystkich dotyczących utrzymywania programów.

A konkretnie? Nie widzę tam żadnych zarzutów. Możesz wymienić jakiś?

Udostępnij ten post


Link to post
Share on other sites
25 minut temu, deshipu napisał:

A konkretnie? Nie widzę tam żadnych zarzutów. Możesz wymienić jakiś?

Się uczepił jak bibliotek. 
Nazwij sobie to jak chcesz - zarzut, marudzenie, zawodzenie...

Udostępnij ten post


Link to post
Share on other sites
1 godzinę temu, Otar napisał:

Się uczepił jak bibliotek. 
Nazwij sobie to jak chcesz - zarzut, marudzenie, zawodzenie...

Ale wiesz, właśnie między innymi dlatego używa się języków programowania wysokiego poziomu, że dużo łatwiejsze i tańsze jest utrzymanie takiego kodu. Jak robisz programy "na zaliczenie", które muszą podziałać dwie minuty podczas demonstracji, a potem już nigdy ich nie dotykasz, to możesz to sobie pisać w asemblerze. Dopiero kiedy przychodzi dorosłe życie, a wydajność programu zależy od użytego algorytmu, a nie tego czy zmienna zajmuje jeden bajt czy cztery, to zaczynasz doceniać środowiska takie jak Java czy Python i doceniać to, że istnieje już biblioteka robiąca daną rzecz, której nie musisz utrzymywać.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
15 minut temu, deshipu napisał:

doceniać to, że istnieje już biblioteka robiąca daną rzecz, której nie musisz utrzymywać

Tyle że może raczysz zauważyć, że doczepiłeś się do mnie iż tracę czas na utrzymywanie bibliotek i to jeszcze z ironią że niby moje programy są od razu idealne. Powtarzam, jeśli nie dotarło: TAKICH BIBLIOTEK NIE MA I MUSZĘ STOSOWAĆ SWOJE. A nie jestem Lordem Dorwinem, aby bazować wyłącznie na tym co już zrobiono i opisano.

 

Udostępnij ten post


Link to post
Share on other sites
33 minuty temu, deshipu napisał:

Ale wiesz, właśnie między innymi dlatego używa się języków programowania wysokiego poziomu, że dużo łatwiejsze i tańsze jest utrzymanie takiego kodu. Jak robisz programy "na zaliczenie", które muszą podziałać dwie minuty podczas demonstracji, a potem już nigdy ich nie dotykasz, to możesz to sobie pisać w asemblerze. Dopiero kiedy przychodzi dorosłe życie, a wydajność programu zależy od użytego algorytmu, a nie tego czy zmienna zajmuje jeden bajt czy cztery, to zaczynasz doceniać środowiska takie jak Java czy Python i doceniać to, że istnieje już biblioteka robiąca daną rzecz, której nie musisz utrzymywać.

Ja Ciebie kompletnie nie rozumiem, jaki Ty problem masz? Może Ty piszesz programy tylko na zaliczenie, bo z tego co widzę, to chyba nie piszesz z doświadczenia, tylko jakieś teorii się naczytałeś i teraz próbujesz innych "uświadamiać" 😉

Udostępnij ten post


Link to post
Share on other sites
24 minuty temu, ethanak napisał:

Tyle że może raczysz zauważyć, że doczepiłeś się do mnie iż tracę czas na utrzymywanie bibliotek i to jeszcze z ironią że niby moje programy są od razu idealne. Powtarzam, jeśli nie dotarło: TAKICH BIBLIOTEK NIE MA I MUSZĘ STOSOWAĆ SWOJE. A nie jestem Lordem Dorwinem, aby bazować wyłącznie na tym co już zrobiono i opisano.

Ależ ja się ciebie nie czepiam. Twoja praca polega na napisaniu i utrzymaniu biblioteki w niskopoziomowym języku — doskonale. Rozumiem, że skoro biblioteka jest stosunkowo prosta i niskopoziomowa, to zastosowanie *w tym konkretnym przypadku* języka wysokiego poziomu nie ma sensu. Ale nie zgadzam się z postulatem, że wobec tego takie języki sensu nie mają wcale.

Udostępnij ten post


Link to post
Share on other sites
9 minut temu, deshipu napisał:

skoro biblioteka jest stosunkowo prosta

I tu muszę Cię zmartwić - biblioteka nie jest wcale prosta (nawet stosunkowo). Przy czym co prawda czas przetwarzania nie jest w tym przypadku jakiś absolutnie krytyczny, ale miło by było, gdyby program z takowej biblioteki korzystający zakończył swoją pracę w jakimś sensownym czasie. Jeśli np. książkę (ok. megabajta tekstu) trzeba podzielić na rozdziały, te na akapity, zdania, frazy, słowa a w końcu dobrać się do analizy pojedynczych liter - proste przesunięcie wskaźnika w C wcale nie jest bardziej skomplikowane, a na pewno o wiele szybsze niż tworzenie jakichś pośrednich stringów w Pythonie. Do ustalenia prawidłowej prozodii muszę we frazie rozpoznać przynajmniej czasowniki i spójniki, do rozwinięcia skrótu muszę pobawić się w rozpoznanie formy gramatycznej, i tak dalej, i tak dalej... nie bez powodu kompilatory pisuje się w C, a nie Pythonie.

Po prostu: język programowania należy dobierać do konkretnego zastosowania. Nie wolno twierdzić, że np. "do przetwarzania tekstu najlepszy będzie Python", bo to zależy od tego w jaki sposób owe teksty się przetwarza. Czasem może być to Python, czasem C, czasem program musi skorzystać z cech różnych języków programowania (dlatego pisanie modułów Pythona w C ma swój sens).

28 minut temu, deshipu napisał:

Ale nie zgadzam się z postulatem, że wobec tego takie języki sensu nie mają wcale

A kto tu śmiał taki postulat postawić? Bo raczej nie ja... ja tylko napisałem coś tam o Javie (która mam nadzieję za parę lat znajdzie się tam, gdzie jej miejsce, obok Algolu60, PL/I czy Snobola).

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
(edytowany)
3 godziny temu, ethanak napisał:

I tu muszę Cię zmartwić - biblioteka nie jest wcale prosta (nawet stosunkowo).

Mamy inne pojęcie o tym co to znaczy "proste". Podejrzewam, że to także wynika z tego, jakich języków na co dzień używamy i jakie problemy musimy rozwiązywać.

Edit: żeby nie było, że próbuję obrazić, przez "proste" rozumiem "nieskomplikowane" a nie "łatwe". Oczywiście osiągnięcie dobrej wydajności wymaga wiedzy i umiejętności i całkiem sporej dawki myślenia.

3 godziny temu, ethanak napisał:

nie bez powodu kompilatory pisuje się w C, a nie Pythonie.

Niestety kompilatory (a także, o zgrozo, interpretery) pisuje się w Pythonie.  W RPythonie dokładniej. Jest dość spora rodzinka, od różnych forthów i lispów do pythona i php. Zastanawiasz się pewnie jak dobrze to działa?

Otóż PyPy, czyli implementacja Pythona w RPythonie, nie dość, że z mniejszym zespołem programistów robi to wszystko, co programiści CPythona, utrzymując zgodność z ich wersjami, to jeszcze mają czas na eksperymentowanie z różnymi podejściami do zarządzania pamięcią, wielowątkowości, spekulatywnego wykonywania kodu i tak dalej. Jednak użycie języka wysokiego poziomu dużo daje. A jak z prędkością? Fakt, tutaj jest różnie, bo w zależności od benchmarku PyPy jest czasem tylko 6x szybszy od CPythona, a nie 40x jak w większości przypadków.

3 godziny temu, ethanak napisał:

Po prostu: język programowania należy dobierać do konkretnego zastosowania. Nie wolno twierdzić, że np. "do przetwarzania tekstu najlepszy będzie Python", bo to zależy od tego w jaki sposób owe teksty się przetwarza. Czasem może być to Python, czasem C, czasem program musi skorzystać z cech różnych języków programowania (dlatego pisanie modułów Pythona w C ma swój sens).

To jest oczywista oczywistość, dodałbym jeszcze tylko, że nie tylko zastosowanie ma wpływ na ten wybór, ale w praktyce też łatwość utrzymania, dostępność programistów oraz jakość dostępnych narzędzi mogą mieć bardzo duży wpływ.

3 godziny temu, ethanak napisał:
4 godziny temu, deshipu napisał:

Ale nie zgadzam się z postulatem, że wobec tego takie języki sensu nie mają wcale

A kto tu śmiał taki postulat postawić? Bo raczej nie ja... ja tylko napisałem coś tam o Javie (która mam nadzieję za parę lat znajdzie się tam, gdzie jej miejsce, obok Algolu60, PL/I czy Snobola).

Zapewniam cię, że Java ma się dobrze i jeszcze dziesiątki lat będzie używana wszędzie tam, gdzie duża ilość kodu i wymagania architektoniczne pasują do tego języka (i rzeczywiście, nie będą to ani aplety przeglądarkowe, ani telefony komórkowe). Natomiast oczerniając Javę pozwoliłeś sobie wymienić cechy, które uważasz w tym języku za wadliwe — i oczywiście są to te same cechy, którymi szczycą się praktycznie wszystkie języki wysokiego poziomu takie jak Python, Perl, Ruby czy JavaScript. Dodając do tego fakt, że pojawiasz się z pianą na ustach w każdym wątku, w którym wspomnę o Pythonie, myślę, że moja interpretacja twoich, jak to twój przyjaciel określił, "zarzutów, marudzenia, zawodzenia" jest choć trochę uzasadniona. Java ma swoje problemy i sam unikam jej jak ognia, ale akurat te, które wymieniłeś, nie są istotne.

Edytowano przez deshipu

Udostępnij ten post


Link to post
Share on other sites
46 minut temu, deshipu napisał:

Dodając do tego fakt, że pojawiasz się z pianą na ustach w każdym wątku, w którym wspomnę o Pythonie,

Przejdź się na spacer, bo coś sobie ubrdałeś. To Ty wyskakujesz z tekstami "wyrazy współczucia" gdy ktoś wspomni o pisaniu modułów do Pythona w C/C++. Awersja do języka? Ktoś Ci krzywdę zrobił? Twoje teksty na temat Pythona akurat niewiele mnie interesują dopóki nie mijasz się z prawdą i nie próbujesz ogłaszać publicznie jakichś prawd objawionych.

Mówisz o szybkości działania... Kilkudziesięciokrotna różnica nie ma pewnie większego znaczenia w domowych zastosowaniach - pięć czy dwieście milisekund to jedna chwała, w sumie i tak mniej niż sekunda. Ale różnica między dwiema minutami a godziną jest już lekko wyczuwalna, mimo że to tylko 30- a nie 40-krotne wydłużenie czasu. Że nie wspomnę o różnicy między godziną a dobą... I jakoś nie mogę sobie wyobrazić syntezatora mowy, który czytając mi książkę zastanawiałby się sekundę przed każdym słowem.

A co do istniejących i udokumentowanych bibliotek - wypada mi tylko powiedzieć "Dobranoc, Lordzie Dorwin".

Udostępnij ten post


Link to post
Share on other sites
4 minuty temu, ethanak napisał:

To Ty wyskakujesz z tekstami "wyrazy współczucia" gdy ktoś wspomni o pisaniu modułów do Pythona w C/C++. Awersja do języka?

Absolutnie nie. I nie ma to nic wspólnego z C++ jako takim — po prostu wiem jak wygląda API Pythona dla C++ i przez jakie obręcze trzeba skakać, żeby to w jakikolwiek sensowny sposób działało. Ale oczywiście musisz założyć, że nie lubię C++.

6 minut temu, ethanak napisał:

Mówisz o szybkości działania... Kilkudziesięciokrotna różnica nie ma pewnie większego znaczenia w domowych zastosowaniach

Nie myślałem o domach, tylko o centrach obliczeniowych. Naprawdę nie ma żadnej różnicy czy twój program zajmuje na starcie 100kB pamięci czy 10GB, jeśli przepuszczasz przez niego w zasadzie w sposób ciągły gibibajty danych. Stałe po prostu znikają, co się liczy to asymptotyczna złożoność algorytmu, którego używasz — czyli napicane w C "szybkie" iterowanie pointerem po danych, z wykładniczą złożonością, będzie zawsze wolniejsze od tego samego zadania zrobionego sprytniejszym algorytmem, z wykorzystaniem już zoptymalizowanych struktur danych obecnych w języku. A przy tym będzie dużo mniejsze, więc łatwiejsze w utrzymywaniu.

Ty piszesz o syntetyzatorze mowy, i to pewnie jeszcze na jakieś mikrokontrolery albo komputery jednopłytkowe — i jak sam mówisz, tutaj język niskiego poziomu się sprawdzi, bo masz niską złożoność zdania do wykonania i niewiele linii kodu — więc nie boli cię tak bardzo ani to, że musisz tego kodu kilkanaście razy więcej napisać, ani to że trudniej go przeczytać i połapać się w nim. Do tego pewnie całość pisze od początku do końca jedna osoba. Ale to jest bardzo niszowy przypadek. W momencie kiedy musisz napisać cokolwiek bardziej złożonego, w zespole który ma więcej niż kilka osób i utrzymywać to przez 20 lat pomimo zmieniających się wymagań, czar niskopoziomowych języków pryska. Chcesz się nawet pozbyć tych binarnych bibliotek, bo w takim PyPy napisane w natywnym Pythonie są prawie zawsze szybsze. 

Już nawet nie wspominam o tym, że zanim skończysz cyzelować ten swój wydajny program w C, to za pół roku komputery i tak będą dwa razy szybsze i będą mieć cztery razy więcej pamięci.

Udostępnij ten post


Link to post
Share on other sites

A tak z ciekawości zapytam - w czy napisany został Linux? Czy jego złożoność nie jest aby większa niż wielu aplikacji w pythonie? Bo jeśli przypadkiem napisany jest w C, działa całkiem wydajnie, ma ponad 20 lat, a pracowało nad nim więcej niż kilka osób to o czym cała ta dyskusja? Są banalne projekty w C i całkiem zaawansowane w pythonie, ale są i o wiele bardziej zaawansowane w C, czy asemblerze. Leczenie własnych kompleksów na forach internetowych chyba nie ma chyba sensu - niech każdy pisze mega fajne programy w jęzku, który zna i lubi oraz pozwoli innym wybierać inne rozwiązania.

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...