Czy według Ciebie języki programowania są łatwiejsze od języków ludzkich?

1

Hejo,

Wchodzę sobie dzisiaj na jutuby, patrzę: filmik pt. "How to think like a programmer" o tu tu. Pomyślałem sobie, że zobaczę, może coś ciekawego usłyszę no i w sumie usłyszałem coś co mnie nawet zaintrygowało. Prowadzący twierdzi, że języki programowania są łatwiejsze niż te ludzkie :O W sumie to nawet się trochę zdziwiłem. W ogóle to nie podobne, a wręcz kosmiczna różnica jest między nimi na pierwszy rzut oka, ale jakby tak się trochę zastanowić.. to może mieć i rację.

Programowania jako tako uczymy się całe życie (czy aby na pewno?), ale składni praktycznie uczymy się tylko raz, bo w większości języków jest ona taka sama, może parę innych rzeczy dochodzi, ale tego się człowiek uczy w krótkim czasie. Natomiast jeśli chodzi o języki ludzie, to już pojawia się problem - składnia w każdym innym języku jest całkowicie inna! To tak, jakby każdy język programowania miał inną składnię, np. zamiast for w Cpp czy Javie, C# miałby loop, albo roundabout XD Byłoby to kłopotliwe, ale na pewno mniej niż w ludzkich językach, bo składnia języków programowania jest dość mała w porównaniu do tej ludzkiej.

Nauczymy się angielskiego - ok. Przychodzi pora na włoski. Boom! Nic nie wiesz. Totalnie nic, a więc trzeba znowu zaczynać od zera, a to jest trochę lipne. Oznacza to pierwszy plusik dla programowania, bo z każdego języka czy to skryptowy czy obiektowy, coś wyniesiesz. Ale w programowaniu też nie jest tak, że czegoś się wyuczysz na blachę i to będzie działać (no okej czasami jakaś zapchajdziura się znajdzie). Wiadomo też, że czasami zrozumienie jak działa jakaś funkcja czy kod w programie może być ciężkie, a w językach ludzkich takiego czegoś nie ma. Uczysz się słówka, odmiany, użycia i tyle. Żadnych problemów.

W moim przypadku nauka języków ludzkich przychodzi szybko. Na pewno szybciej niż głębokie zrozumienie niektórych rzeczy w programowaniu, a więc normalne będzie, że będę przekonania, że nauka programowania jest trudniejsza. Jak to u was? Czy w ogóle porównywanie takich języków ma sens? Zapraszam do dyskusji!
Pozdro ;)
screenshot-20181108171816.png

1

Oczywiście, że języki programowania są łatwiejsze do nauczenia od języków ludzkich. Opanowanie podstaw dowolnego języka obiektowego lub strukturalnego, to dla średnio-rozgarniętej osoby od 30 minut to 1 godziny i już można jakiś prosty programik napisać. Natomiast opanowanie języka obcego tak, aby swobodnie się w nim komunikować, zajmuje lata. Oczywiście w przypadku programowania, doświadczenie, komunikacja i opanowanie narzędzi, bibliotek, etc. robią swoje w przypadku zawodu programisty, ale nie są to kwestie związane z samą składnią języka.

3

Tylko tak naprawdę w programowaniu nie chodzi o znajomość języka, bo to jest kwestia wtórna, ale o umiejętność analitycznego myślenia i rozkładania problemów na składniki pierwsze.

Możesz przeczytać 5 razy książkę odnośnie jakiegoś języka, nauczyć się na pamięć wszystkich występujących w nim poleceń oraz całej skladni, ale wcale nie będzie to oznaczać, że stałes się programistą.

A samo porównanie języka naturalnego z językiem programowania jest moim zdaniem zupełnie chybione. Oba twory maja zupełnie inne zadania, więc porównywanie ich że sobą ma taki sens, jak stawianie obok siebie formuły 1 oraz tira. Niby jedno i drugie to samochód, ale porównywanie ich jest bezcelowe.

0

@wiciu: 30 minut lub godzina wystarczy żeby napisać prosty programik, ale tyle też wystarczy żeby przedstawić się w obcym języku. Trzeba lat, aby nauczyć się płynnie posługiwać językiem za równo ludzkim jak i programowania, tylko, że w programowaniu będziemy mieli więcej korzyści mimo wszystko, bo doświadczenia łatwo przeniesiemy na inny język programowania, a szwedzki z rosyjskim raczej mają mało wspólnego ze sobą :D

@cerrato Zdecydowana racja z tym porównywaniem języków, ale może tu chodzi o sam poziom trudności? Czy analitycznego myślenia uczysz się w takim samym tempie jak języka obcego? O i teraz jeszcze jedna zagwozdka mi przyszła do głowy: czy w ogóle da się nauczyć analitycznego myślenia czy po prostu to jest polerowanie wrodzonej umiejętności?

1

Czy analitycznego myślenia uczysz się w takim samym tempie jak języka obcego? O i teraz jeszcze jedna zagwozdka mi przyszła do głowy: czy w ogóle da się nauczyć analitycznego myślenia czy po prostu to jest polerowanie wrodzonej umiejętności?

Wiadomo, że naturalnego uczysz się dłużej, ale to o niczym nie świadczy, bo jak pisałem wcześniej po pierwsze język naturalny jest czymś zupełnie innym od języka programowania, a po drugie - znajomość języka wcale nie jest tym samym, co umiejętność programowania.

Odnośnie drugiej części - mój nauczyciel saksofonu powtarza, że praktycznie każdy może się nauczyć grać na dowolnym instrumencie, jednostki totalnie amuzykalne to sporadyczne przypadki. Ale nie każdy kto nauczy się grać będzie na takim poziomie, który umożliwi granie na poziomie profesjonalnego muzyka. Może sobie grać dla przyjemności czy w jakimś zespole na weselach, ale już nie będzie grał na płycie Grzegorza Turnau'a.

Myślę, że podobnie jest z podobnie jest z programowaniem - z grubsza każdy, kto nie jest totalnym idiota, jest w stanie się nauczyć (oczywiście nie w 3 tygodnie) ale jak ktoś nie ma tak zwanego drygu do tego, to raczej zawsze będzie przeciętny. Z drugiej strony nie ma w tym niczego złego, tacy ludzie też są potrzebni. W końcu Kubica jest jeden, ale kierowców autobusów i taksówek są tysiące ;)

0

Trzeba lat, aby nauczyć się płynnie posługiwać językiem za równo ludzkim jak i programowania

Bez przesady, na opanowanie języka programowania zazwyczaj wystarcza kilka miesięcy...

2

Trochę się można zgodzić - języki programowania są zazwyczaj nieco bardziej uporządkowane od języków naturalnych. Wynika to z faktu, że przede wszystkim były projektowane jako takie, po drugie - nie mają za sobą tysięcy lat ewolucji, a co najwyżej kilkadziesiąt (i też jest to ewolucja sterowana).

Ale i w nauce języków naturalnych znajomość każdego kolejnego IMO pomoże ci w nauce dalej - o ile ogarniesz nie tyle język, co nieco teorię języków. Potem będziesz wiedział "a, przypadki tu są takie, a w tym jest inaczej", "a, tutaj rodzajniki są, a tutaj nie ma, bo rodzaj dopełnienia wyraża fleksja" itp.

0

języki programowania są zazwyczaj nieco bardziej uporządkowane od języków naturalnych

Zgadza się. Ale z drugiej strony języki naturalne są o wiele bardziej skomplikowane (a co za tym idzie - więcej w nich chaosu) przez to, że z założenia mają uniwersalne przeznaczenie.
Język programowania to twór, który ma przekazać komputerowi polecenia programisty. Więc, co za tym idzie, dotyczy jedynie opisu struktur danych oraz poleceń, które można na tych danych zrealizować. Z kolej język naturalny jest wszechstronny - można opisać nim uczucia, opowieść o rybaku i złotej rybce, przepis na placek z wisienką oraz sposób budowy samochodu.
Oczywiście - w języku programowania można także napisać procedurę wypieku placka - coś w stylu "weź 200g mąki, 3 jajka, pół paczki droźdży itp.". Można nawet spróbować jakoś - poprzez wzory matematyczne - zdefiniować, ile to jest 200 gramów. Ale nie wyobrażam sobie określenia w języku programowania, czym jest mąka albo jajo. I nie jest to wcale wada języka programowania, a jedynie wynika to z faktu, że ma on inne przeznaczenie. A ponieważ przeznaczenie języka programowania jest o wiele węższe, niż języka naturalnego, oczywiste jest, że nauka samego języka programowania przychodzi łatwiej, niż naturalnego.

Dodatkowo - przy naturalnym dochodzą jeszcze takie rzeczy, jak mówienie czy słuchanie, czyli coś, czego nie ma raczej przy programowaniu - tu wszystko się opiera o pisanie i czytanie.

No i ostatnia myśl - język naturalny jest żywym i elastycznym tworem, który wprawdzie posiada pewne zasady, ale można je nieraz łamać, żeby osiągnąć zamierzony efekt. Można przestawić szyk zdania, bawić się interpunkcją itp. Możesz napisać "Baaaardzo Cię kocham !!!!!!" i to zdanie będzie czytelne - kładziesz nacisk na mocne emocje, które "posiadasz". W języku programowania, jak dodasz kilka średników na końcu, to raczej nie przyspieszysz wykonania programu, a tablica typu arrrrrray nie będzie "lepsza" od zwykłej ;)

1

To tak jakby pytać czy zapis nutowy jest łatwiejszy od języka ludzkiego.

To że na zapis programu komputerowego mówimy „język” nie znaczy że jest to język w tym sensie co polski czy angielski, więc to porównanie jest raczej nietrafione.

1

Nie można tego tak porównywać, bo przeznaczenie jest zupełnie inne.

Język programowania ma "współpracować" z komputerem, który jest na ten moment 0/1kowy.

Język ludzki ma o wiele większą składnie, jest znacznie bardziej rozbudowany i często się zmienia, a język programowania od pewnego etapu już tak bardzo się nie zmienia.

2

Języki programowania mają o wiele mniej "słów" od języków naturalnych, mają też dużo mniej reguł. Reguły w programowaniu są o wiele prostsze (mają np. mniej wyjątków, o ile w ogóle). Oczywiste więc, że języki programowania są prostsze od dowolnego języka naturalnego.

Trochę też nie wiadomo, co chcesz porównać: czy język programowania do języka naturalnego, czy samo programowanie, ale wtedy do czego? Do mówienia?

Mówi się czasem, że programowanie służy do (bardziej formalnego) wyrażania myśli/idei. Wtedy problemem nie jest uczenie się języka programowania, ale samo programowanie własnie - tzn. umiejętne, klarowne i precyzyjne wyrażanie myśli. Zatem w programowaniu nie jest problemem składnia danego języka, ale właśnie myślenie (ile razy miałeś sytuację, w której dokładnie wiedziałeś jak coś trzeba zrobić, ale nie znałeś dostarczająco języka, żeby wyrazić dany pomysł? raczej odwrotna sytuacja jest częstsza).

Jeszcze taki lekko powiązany cytat:

Underlying our approach to this subject is our conviction that ``computer science'' is not a science and that its significance has little to do with computers. The computer revolution is a revolution in the way we think and in the way we express what we think.

0

Jeżeli chodzi o to nauczenie się drugiego języka obcego jak znamy pierwszy nie będzie aż takie trudne np jak znamy angielski to łatiwje się nauczymy niemieckiego jak byśmy nie znali angielskiego bo jak ktoś zna 1 język obcy biegle to ma w mózgu ukatywione coś tam bardziej tak samo jest z językami programowania, że jak znamy 1 język np c to możemy się bezproblemowo nauczyć php ale już assembler będzie ciężej i tak samo jak języki programowania dzielimy na gemrańskie słowiańskie itp to języki programowania też dzielimy.

0

Prowadzący twierdzi, że języki programowania są łatwiejsze niż te ludzkie :O

Na pewno są prostsze. Mają mniej reguł gramatycznych.

Łatwiej opisać gramatykę języka programowania niż np. opisać gramatykę języka polskiego. Łatwiej zrobić parser / generator kodu, niż zrobić coś, co będzie analizowało ludzki język / generowało poprawne i sensowne zdania.

Z perspektywy ludzkiej natomiast to zależy. Łatwiej Europejczykowi będzie się nauczyć języka angielskiego niż nauczyć programować (bo większa ekspozycja - z angielskim mamy styczność od dziecka, z programowaniem niekoniecznie).

Z drugiej strony np. uczyłem się szwedzkiego z kilka lat a dalej nie rozumiem, jak mówią po szwedzku. Myślę, że łatwiej wystartować z językiem programowania jednak, nawet jak ktoś nigdy nie programował jeszcze.

Szczególnie, że w języku dochodzi język mówiony.

Natomiast jeśli chodzi o języki ludzie, to już pojawia się problem - składnia w każdym innym języku jest całkowicie inna!

Inna, ale podobna w grupach językowych. Języki słowiańskie, romańskie, germańskie itp. mają zwykle podobną składnię w zakresie jednej grupy.

Nauczymy się angielskiego - ok. Przychodzi pora na włoski. Boom! Nic nie wiesz.
Totalnie nic, a więc trzeba znowu zaczynać od zera, a to jest trochę lipne.

Przypuszczam, że angielski jako język "romański" (tj. ukształtowany pod dużym wpływem francuskiego) mógłby mieć trochę podobnych wyrazów do tych włoskich. Zresztą włoski pochodzi z łaciny, a przecież nawet do polskiego przeniknęło wiele słów pochodzenia łacińskiego.

2
Sunnydev napisał(a):

Programowania jako tako uczymy się całe życie (czy aby na pewno?), ale składni praktycznie uczymy się tylko raz, bo w większości języków jest ona taka sama, może parę innych rzeczy dochodzi, ale tego się człowiek uczy w krótkim czasie. Natomiast jeśli chodzi o języki ludzie, to już pojawia się problem - składnia w każdym innym języku jest całkowicie inna! To tak, jakby każdy język programowania miał inną składnię, np. zamiast for w Cpp czy Javie, C# miałby loop, albo roundabout XD Byłoby to kłopotliwe, ale na pewno mniej niż w ludzkich językach, bo składnia języków programowania jest dość mała w porównaniu do tej ludzkiej.

To zasadniczo bzdura. Jak masz na myśli C++, C, Javę i C#, JS to faktycznie są podobne, bo to w zasadzie jeden język ( ok, JS jest nieco inny).
Jednakowoż, sa inne języki programowania, w których gramtyka i sposób myślenia jest zupełnie inny.
Zobacz sobie np. SQL, XSTL, Prolog, SML/ Haskell, Unlambda, Forth, Logo, Agda/Coq.
Na moje oko różnią się od siebie bardziej niż navaho od agielskiego.

Ale i tak wszystkie one są prostsze od języków ludzkich. Ze szczególnym uwzględnieniem polskiego, ludzkiego odpowiednika malbolge.

0

Natomiast jeśli chodzi o języki ludzie, to już pojawia się problem - składnia w każdym innym języku jest całkowicie inna!

Inna, ale podobna w grupach językowych. Języki słowiańskie, romańskie, germańskie itp. mają zwykle podobną składnię w zakresie jednej grupy.

A i te wymienione grupy należą do tej samej rodziny języków indoeuropejskich, wraz z taką (nie-)egzotyką jak farsi, hindi czy urdu.
Języki indoeuropejskie okazują się w miarę podobne do siebie pod względem składni gdy się je porówna z językiem spoza tej rodziny, jak swahili czy japoński.

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