Języki obce

Student Mask
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 3 lata
  • Postów:6
0

Cześć,

Pytanie na luzie.

Jak się ma tak naprawdę nauka języków obcych do programistycznych ? Wszędzie w artykułach można zauważyć, że ludzie widzą dużo wspólnego ze sobą, osobiście średnio się z tym zgadzam.

Jakie jest wasze zdanie?

sugar_hiccup
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 2 lata
  • Postów:176
0

Języki programowania są bardzo ściśle określone, obejmują podobne konstrukcje myślowe i jest dużo mniej materiału do przywojenia, keywordy liczy się w dziesiątkach. Języki ludzkie są rozległe (kilkadziesiąt tysięcy słów), luźniej powiązane między sobą, bardziej płynne + jeszcze jest kwestia tego, że język pisany != język mówiony. Języki programowania korzystają głównie ze znaków ASCII (nie licząc jakichś abominacji typu APL czy emoji w nazwach zmiennych), języki ludzkie mają różne alfabety.


My to na arm napiszemy wszystko i zrobimy co chcemy tyle że 90% kodu to biblioteki z netu albo robota kompilatora Zdajesz sobie sprawę że tak na prawdę wyższy poziom języka może świadczyć jedynie o tym jak niskim poziomem wiedzy może dysponować bałwan,który nazwie się w rezultacie programistą i napisze działający program wciskając zleceniodawcy że tam to akurat musi być 100MHz ARM z 1M pamięci bo tak na prawdę jego pusta łepetyna nie potrafi zrealizować czegoś na innym słabszym mikrokontrolerze
edytowany 1x, ostatnio: sugar_hiccup
Student Mask
Rozumiem, że języki ludzkie mają różne alfabety, nie mówię tutaj od razu o nauce Mandaryńskiego. W przypadku operowania np. jednym z języków romańskich, alfabet jest do siebie podobny, pozostaje kwestia wymowy czy sylaby, które stanowią podobne litery. Moim skromnym zdaniem(zależy to również od predyspozycji) ale ogółem "lżej" opanować język obcy i posługiwać się nim podczas wykonywanego zawodu niż poprawnie i przejrzyście pisać/tworzyć kod.
loza_wykletych
loza_wykletych
  • Rejestracja:prawie 5 lat
  • Ostatnio:około 4 lata
  • Postów:854
1
Student Mask napisał(a):

Jak się ma tak naprawdę nauka języków obcych do programistycznych ? Wszędzie w artykułach można zauważyć, że ludzie widzą dużo wspólnego ze sobą, osobiście średnio się z tym zgadzam.

Ja też widzę dużo wspólnego. Po pół roku umiesz się powitać, pożegnać, nazwać wszystkie rzeczy biurowe, meble, AGD, RTV i części ciała co pozwala ci zagaić do trzeźwej osoby obok z grupy. W programowaniu umiesz napisać class, closure, if, else i stworzyć prostego CRUDa którego pokazujesz z dumą na 4p.

Później jedziesz za granicę oraz/i zatrudniasz się w międzynarodowym korpo gdzie nikt nikogo nie rozumie a mimo to wszyscy się uśmiechają, klepią po plecach i wszystko jakoś się kręci. Później podobieństwa zaczynają się nawarstwiać i zaczynasz kwestionować swoje zdolności poznawcze - skutkiem czego oskarżasz siebie o syndrom impostora bowiem to logice wbrew że wszyscy wszystko rozumieją a ty nie.

Ale nie martw się - komunikacja to iluzja. Najważniejsze jest zgadzać się w końcu i nie kwestionować zbyt głęboko.
Czy ty też słyszysz 21?


Z wszelkiego drzewa tego ogrodu możesz spożywać według upodobania - ale z drzewa poznania dobra i zła nie wolno ci jeść, bo gdy z niego spożyjesz, niechybnie umrzesz.
TS
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:394
2

I tu i tu jest składnia, z tym, że w językach naturalnych luźniejsza i korekcja błędów jakby lepsza. "ja cię kochać", SyntaxError, ale i tak każdy by zrozumiał, o co chodzi.

Alfabet to szczegół, mógłbym klepać kod w kanie, gdyby trzeba było. Raczej po góra miesiącu bym się przyzwyczaił.

Odpowiednikiem słów by były funkcje, klasy, struktury itd. Ale w językach naturalnych trzeba ich znać parę tysięcy, żeby jako tako funkcjonować. Szczerze to nie wydaje mi się, że znam aż tyle rzeczy w Javie. Ani też, że tyle może ich być w kilkuletnim projekcie. Toż to książka napisana przez autora w rok będzie miała więcej unikalnych słów niż nawet wiekowy kod rozwijany przez kilka osób.

Czyli generalnie wygląda, że w językach naturalnych jest dużo więcej do nauczenia na pamięć (pomijając jakieś zagubione dusze, które wkuwają metody z biblioteki standardowej). W pierwszej fazie dostrzegam pewnie analogie, bo np. nauka jęzka typu SOV potrafi być na początku równie zaskakująca, co nauka Haskella. Ale tak powiedzmy po roku to w Haskellu możesz już pisać poważne aplikacje, jeśli nie jest to twój pierwszy język programowania, a w przypadku języka obcego to możesz co najwyżej zrobić zakupy za granicą i przekazać jakieś proste informacje.

Tak, że są jakieś punkty wspólne jak się na to spojrzy z góry, ale na dłuższą metę to zupełnie inne doświadczenie.

Student Mask
Oczywiście, zgodzę się z tym, że jest to inne doświadczenie. Rozmowa z komputerem odbiega trochę od komunikacji międzyludzkiej, przy rozmowie gdy wtrącimy "kali jeść" druga osoba raczej nas zrozumie, jednak gdy mówimy do komputera, prosi on o dokładne przekazanie informacji. Jeżeli mówimy o językach programowania to nie wszystkie odbiegają od siebie tak bardzo jak języki obce, które mają kompletnie inne alfabety. Koniec końców, komputer musi mieć podane dokładne informacje jak ma postępować, zwykły człowiek, który zna język w jakim do niego mówimy prędzej wyłapie kontekst.
loza_wykletych
loza_wykletych
Koniec końców, komputer musi mieć podane dokładne informacje jak ma postępować, zwykły człowiek, który zna język w jakim do niego mówimy prędzej wyłapie kontekst. - sieci neuronowe też?
99xmarcin
  • Rejestracja:prawie 5 lat
  • Ostatnio:4 miesiące
  • Postów:2420
0

Nauka języków obcych to przede wszystkim nauka słówek. Gramatyka to może 10% (chociaż w szkole chcieli by inaczej), lwia część czasu idzie na wbicie do głowy słówek wraz z arbitralnymi informacjami typu gender der/die/das lub że to słówko można użyć w kontekście A, ale już nie w kontekście B. Do tego dochodzą idiomy np. "dmuchać na zimne".

Tłumacząc to na język programowania nauka języka obcego przypomina naukę API jakiejś potężnej biblioteki np. Hibernate lub biblioteki standardowej - tysiące klas i metod. Trzeba mniej więcej wiedzieć co jest, a czego nie ma. Idiomy są i w językach naturalnych i w językach programowania. Na tym podobieństwa się kończą, języki programowania to notacja precyzyjna, matematyczna.

Podsumowując jak się nauczysz Niemieckiego/Hiszpańskiego/Rosyjskiego/lub innego iego to Twoja pamięć powinna ulec poprawie, co się przełoży na lepsze możliwości programistyczne. Oczywiście gdybyś ten sam czas przeznaczył na napisanie kompilatora Haskella od zera to pewnie też nastąpił by przyrost istoty szarej, może nawet większy. A gdyby ten czas przeznaczyć na naukę modnych frameworków które dopiero co wchodzą na rynek? Tu wzrost liczby szarych komórek ciężko ocenić ale $$$ na pewno by wzrosła :D W mojej opinii nauka języka obcego (jeżeli nie planujesz przeprowadzki) to dobre hobby, i na odstresowanie i na poznanie nowych ludzi - ale nie oczekiwał bym że zrobi to z Ciebie geniusza programowania.


Holy sh*t, with every month serenityos.org gets better & better...
edytowany 2x, ostatnio: 99xmarcin
Student Mask
Dziękuję za tak wyczerpującą odpowiedź i podsumowanie. Tworząc ten wątek miałem w głowie bardziej myśl, zmiany ukierunkowania rozwoju. Chciałem po prostu zamienić w pracy rozmowę z komputerem na tą bardziej rzeczywista czyli rozmowę z ludźmi w językach obcych. Trochę coś w stylu help desku.
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)