Jak zabrać się za programowanie?

Jak zabrać się za programowanie?
Demonologyy
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 9 lat
  • Postów:9
0

Witam,

Jako, iż jest to mój pierwszy post na tym forum, chciałbym serdecznie wszystkich powitać :)
Przechodząc do meritum, w tym roku zostanę absolwentem gimnazjum, więc będę musiał dokonać wyboru nowej szkoły. Na 90% będzie to technikum informatyczne, więc programowanie mnie nie ominie, zresztą zawsze mnie to ciekawiło.
Chciałbym zacząć uczyć się tego na własną rękę, tak, aby w przyszłości było mi łatwiej. Kto wie? Może nawet będę z tego w przyszłości żył.
Próbowałem się kiedyś zabrać za C++, ale skończyło się na pętlach for, while, do...while :(
Jaki język polecacie na początek? Przydatny, a zarazem prosty w nauce? Prosiłbym również o różne wskazówki, linki do dobrych i przejrzystych kursów.

Z góry dziękuję za okazaną pomoc.

panryz
a ja słyszałem że w technikach to już nie ma programowania...
Narkan
Masz racje, nie ma już programowania jako przedmiot. php, html, js jest wrzucony w przedmiot witryny i aplikacje internetowe i projektowanie witryn a C++ jest w ramach rozszerzonej informatyki. Niektóre szkoły zamiast C++ realizują pascala.
n0name_l
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 4 lata
  • Postów:2412
2

C#

matoung
  • Rejestracja:około 10 lat
  • Ostatnio:ponad 7 lat
  • Postów:53
1

Tematów było już multum. Poszukaj. Jak chcesz być dobrym programistą to musisz też szukać dobrych rozwiązań na forach itp. Masz ku temu okazję, by potrenować :) Tak na serio... Nie ma języka łatwego w nauce. Są tylko takie, które są łatwiej przyswajalne i te które są trudniej przyswajalne. Osobiście rozpoczynałem od Javy, a po tem przeszedłem na C++.

HA
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 7 lat
  • Postów:335
1
Demonologyy napisał(a):

Chciałbym zacząć uczyć się tego na własną rękę, tak, aby w przyszłości było mi łatwiej. Kto wie? Może nawet będę z tego w przyszłości żył.

Wybór języka jest uzależniony od obranej ścieżki kariery. WebDeveloper? Aplikacje na Android? Systemy wbudowane (układy scalone)? Musisz określić się co chcesz w życiu robić, jakim programistą być - dopiero możesz określić jakiej technologii się uczyć. Każdy język programowania rządzi się swoimi prawami.

Demonologyy
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 9 lat
  • Postów:9
0

Strony internetowe / aplikacje na androida / programy, gry na Windows

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Java najbardziej podpasowuje się pod to, głównie ze względu na Androida.


edytowany 1x, ostatnio: Patryk27
NO
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 6 lat
0

Java może wydawać się przytłaczająca i ciężka na początek, ale jak ktoś udźwignie to potem będzie łatwiej jakby zaczynał np od C. To jest moje zdanie.

Demonologyy
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 9 lat
  • Postów:9
0

Motywację mam, ale nie wiem czy wystarczającą do rzucania się na Javę :<

1

Python

LA
Kolejny raz python... Czy naprawdę tylko mi wydaje się, że jego składnia jest po prostu chora?
spartanPAGE
jeśli białe znaki kupujesz na wage w warzywniaku to tak
Demonologyy
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 9 lat
  • Postów:9
0

No to już nie wiem :(

C#, Java, czy Python?
A może coś innego?

Zobacz pozostały 1 komentarz
Demonologyy
Napisałem wyżej ._. ale z wymienionych przez Ciebie, wszystko. No może nawet strony internetowe w przyszłości
X3
Ziomuś, też zaczynam z programowaniem, jestem dwa lata młodszy od Ciebie. Też mam problemy z wybraniem języka :/ Co chciałbyś konkretnie robić? Gry na Windowsa/Androida, strony?
Demonologyy
Napisałem już ;_;
H1
Na początek będziesz musiał zdecydować się jakąś ze ścieżek. A gry windows c++/c#... Polecam sprawdzić Pythona, a później może zmienić. Zagraj sobie w grę Colobot.
LukeJL
olej wybor jezyka. tego sie nie wybiera, tylko probujesz rozne jezyki az trafisz na swoj. a przecietny programista i tak zna iles jezykow programowania raczej.
twonek
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 2 lata
  • Postów:2500
2
Demonologyy napisał(a):

No to już nie wiem :(

Tak zawsze się kończą takie tematy. Było ich milion na forum. Jeśli oczekujesz, że wszyscy jednym głosem polecą jeden język, to trochę nie ta branża.
Poszukaj starych tematów, przeczytaj je i zrozum dlaczego ktoś poleca ten a nie inny język, a potem zdecyduj co jest najlepsze dla Ciebie.

Demonologyy
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 9 lat
  • Postów:9
0

Rozumiem o co chodzi, przede wszystkim szukam PRZEJRZYSTEGO i PROSTEGO języka na start, w którym zrozumiem z czym to się je.
Potem zdecyduję, czego jestem w stanie się nauczyć i co chcę pisać.

X3
Python/Ruby najlepsze na start, ale że pomiędzy stronami internetowymi a grami i aplikacjami na androida/windowsa jest ogromna różnica to ty wiedz :D
Demonologyy
Z tego to ja sobie zdaję sprawę :D
X3
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 10 lat
  • Postów:53
1

Python byłby idealny. Do gier framework PyGame, do stron internetowych Django.

Zobacz pozostałe 6 komentarzy
Demonologyy
Możecie się nie obrażać? Przynajmniej w moim temacie?
Wizzie
PyGame do niczego się nie nadaje.
X3
@Wizzie to jaki framework do pythona do gier 2d?
panryz
zostawcie go! on ma 14 lat, jest na rozstaju dróg :D
fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
1

skoro chcesz przejrzystego jezyka i prostego

Python

Demonologyy
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 9 lat
  • Postów:9
0

W takim razie zabiorę się za niego, ale proszę o nie zamykanie wątku, aby w razie problemów nie zakładać nowego tematu

H1
  • Rejestracja:około 10 lat
  • Ostatnio:ponad 6 lat
  • Postów:185
0

w przypadku problemów, polecam:
www.google.com

aha, w przypadku pythona chyba tylko angielskie źródła się do czegoś nadają.
http://www.reddit.com/r/learnpython/wiki/index

SO
  • Rejestracja:ponad 10 lat
  • Ostatnio:12 miesięcy
0

C#

FA
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 7 lat
  • Postów:475
3

A ja na sam poczatek poleciłbym jezyk angielski. Ewentualnie nauka angielskiego rownolegle z jakims jezykiem programowania - bez angielskiego za daleko nie zajdziesz w programowaniu:)

Demonologyy
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 9 lat
  • Postów:9
0

W sumie jest to dobry pomysł.
Za kilka tygodni mam testy, więc może się przydać, a za kilka miesięcy zabiorę się za programowanie :)

Programmer98
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 9 lat
0
Demonologyy napisał(a):

W sumie jest to dobry pomysł.
Za kilka tygodni mam testy, więc może się przydać, a za kilka miesięcy zabiorę się za programowanie :)

Tak na początku angielski, później weź się za matematykę, fizykę o już 3 klasa liceum lub 4 technikum ucz się do matury, żeby dostać się na dobre studia. Następnie zdobądź papier mgr i możesz brać się za programowanie :). Ja bym zaczął poświęcić np. 1h dziennie na programowanie to tylko 1 godzina relaksu (jeśli lubisz programować).

somekind
Ty tak na serio?
Demonologyy
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 9 lat
  • Postów:9
0

Z matematyką problemów żadnych nie mam - 6 na półrocze :>

Zobacz pozostałe 2 komentarze
n0name_l
To nie żart, tylko stwierdzenie, że w gimnazjum matematyki to praktycznie nie ma.
spartanPAGE
Teoria grafów w mniej lub bardziej obszernej formie to must know podczas programowania.
Demonologyy
No wiem, że trudne to to nie jest (niestety, bo bardzo lubię matematykę :D).. To co Python czy Java?
panryz
Java, większy poziom abstrakcji do ogarnięcia :D
Programmer98
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 9 lat
0
Demonologyy napisał(a):

Z matematyką problemów żadnych nie mam - 6 na półrocze :>

Nie o to chodzi. Tylko o to, że jeżeli naukę programowania będziesz przekładał bo egzamin, bo ... ... to nigdy nie nastąpi czas na tą naukę.

Demonologyy
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 9 lat
  • Postów:9
0

A co powiecie na drugi start z C++?

OtoKamil
Wybierz cokolwiek, byleby w końcu zacząć. Skończyłeś na pętlach, a tu dopiero wszystko się zaczyna i praktycznie wszędzie kod pętli wygląda niemal identycznie więc czy to python czy c++ czy java, podstawy są takie same. Jak inni wspominali wcześniej, wybierz sobie jedną ścieżkę i na razie się jej trzymaj. Nie rób 100 różnych prostych aplikacji w różnych technologiach/językach, chwyć się jednej (jednego kierunku) i zrób przynajmniej 1 porządną aplikacje przy której poznasz więcej rzeczy.
vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
0
Demonologyy napisał(a):

A co powiecie na drugi start z C++?

Zapomnij o tym języku.

  1. Chcesz się nauczyć programować (a) czy chcesz się nauczyć C++ (b)?
  2. Jeśli (a) to jest masa prostszych języków które o wiele szybciej ogarniesz nie zniechęcając się przy tym.

Nie chodzi o to że C++ ma jakąś skomplikowaną składnię (bo ma) tylko o to że ma kupę różnych niuansów które możesz analizować miesiącami i będziesz się uczył języka zamiast programowania. Czyli nie będziesz rozwiązywał ciekawych problemów tylko walczył z kompilatorem.

Gdybyś się jednak nie zniechęcił, w moim profilu jest link do kursu C++.

Od siebie dla początkującego polecam Python: Rasberry Pi, web2py, matplotlib, PIC.
Ew. Javę lub Free Pascal do GUI.

kaczus
  • Rejestracja:około 10 lat
  • Ostatnio:4 minuty
  • Lokalizacja:Łódź
  • Postów:1402
0

A ja powiem, że bez różnicy, czy będzie uczył się C++, czy innego języka, programować może nauczyć się w każdym.
Nie wiem ponadto co w C++ jest zniechęcającego (w kontekście do innych języków)?


Ogólnie na prace domowe mam stawki zaporowe. Czasem coś o programowaniu znajdzie się na mojej stronie
Zobacz pozostałe 10 komentarzy
datdata
Istnieje coś takiego jak hipoteza Sapira-Whorfa, która mówi - w dużym w skrócie - że używany język (naturalny, chociaż to działa też dla języków programowania) determinuje lub przynajmniej wpływa na sposób myślenia o świecie/rzeczywistości. Wybór języka jest dość kluczowy, bo kształuje pierwsze i elementarne nawyki myślowe dotyczące rozwiązywania problemów za pomocą programowania. IMO warto spędzić trochę wybierając sobie pierwszy język.
somekind
No, zanim się wybierze pierwszy język najlepiej byłoby poprogramować przez trzy lata w różnych, żeby wiedzieć, co wybrać. ;)
kaczus
@datdata tylko, że to bardzo duże uproszczenie, bo wpływ na to ma fakt, w jakim środowisku jesteś wychowywany, a to przekłada się, jakiego języka tam się używa. No ale tak - niektórzy mają hipotezę, że jeśli wyrwiesz pająkowi wszystkie kończyny, to on głuchnie, bo nie idzie jak mu każesz...
kaczus
Tylko, że cały czas jest to tylko hipoteza....
0

Zacznij od Colobot'a / Ceebot'a .

2

Ja też dołożę parę groszy od siebie. Lecz nie skupie się na poleceniu Ci języka.
Jeżeli nie mieszkasz w większym mieście, to proszę Cię odpuść sobie technikum i skieruj się bardziej do liceum mat-fiz/inf. Naprawdę radzę Ci tak zrobić. Wiem, że niektórzy w gimnazjum mają obawy czy dadzą sobie radę, skoro nigdy nie skupiali się na tej matmie i fizyce. Ale spróbuj. Jeżeli myślisz o karierze programisty, to technikum wcale Ci może w tym nie pomóc.

W technikum masz oprócz standardowych przedmiotów, nawalone pełno innych przedmiotów, które są realizowane strasznie na odwal. Siedzi się dłużej w szkole niż w takim liceum, a wiadomo, że jeżeli chodzi o programowanie to najważniejsze jest doświadczenie, które zdobędziesz sam. Potem po 4 latach, zbliża się matura i zdajesz sobie sprawę, że w sumie to co przerobiliście w szkole jest niewystarczające, jeżeli chcesz iść dalej na studia.

Wiem to z autopsji. Zamiast liceum, wybrałem "najlepsze" technikum w moim mieście. Jak się skończyło?

  • Poziom nauczania jest dużo niższy niż w liceum.
  • Jest dużo mniej czasu na samorealizacje.
  • Pełno śmieciowych przedmiotów.

Ja źle wybrałem i wylądowałem w takiej sytuacji: Matura za miesiąc. Rozszerzenie z matematyki musiałem przerobić sam (bo w szkole podstawa, i jeszcze na odwal), na dodatkowe przedmioty brakło zwyczajnie czasu, także piszę jedynie rozszerzenie z Informatyki, opierając się na złudnej nadziei że "umiem programować". Ostatnia klasa, muszę siedzieć na lekcjach typu biologia, chemia, geografia, wos. Strasznie zmarnowany czas.

Dodatkowo technik informatyk (tej starej wersji) jest bardzo słabo respektowany przez pracodawców. Nie wspominając o jego idiotycznej formule.

DO TEMATU.
Wybierz język C, albo od razu C++. Przerób go dobrze z paru książek, to da ci solidną podstawę do ogólnej kariery programisty w przyszłości. Rzeczywiście teraz bardzo dobrze jest znać C#, Jave - ale ja wychodzę z założenia, że lepiej się na początku trochę napocić z C++ i potem wziąć się za inne języki. Równolegle polecam ogarnąć dobrze HTML4, CSS, JS(najlepiej jakąś jedną bibliotekę np. jQuery) i liznąć PHP (po C++ składnię szybko się przyswoi) aby mieć jak szybko zarobić parę groszy na chleb.

Zobacz pozostałe 14 komentarzy
Garen_eye
Dobrze, w takim razie zwracam Ci rację. Może ja to po prostu polubiłem.
vpiotr
Nauka C++ właściwie nigdy się nie kończy. Dlatego jest słaby dla początkujących. Początkującym lepiej dać coś przy czym będą mogli powiedzieć "jestem w tym dobry, znam ten język".
kaczus
@vpiotr występuje, tylko nie musisz używać, ale czasami - przy niektórych projektach masz taką konieczność (względy ograniczeń lub optymalizacji - czasami nawet nie new delete, tylko inny alokator udostępniony przez środowisko w którym pracujesz). Ale to już nie podstawowa wiedza, podstawowa wiedza to poznanie algorytmów, umiejętność odpowiedniego sposobu myślenia, który później przekładamy na gotowy program. I nie upieram się by to było C++, tylko nie widzę ani większych wad, ani zalet wybory tego a nie innego języka.
KR
Dla początkującego bardzo ważne są komunikaty o błędach, oraz żeby nie dawało się robić rzeczy bez sensu. W C++ można robić mnóstwo rzeczy bez sensu, które kompilator łyka, a nawet jak nie łyka to daje takim błędem, że nie wiadomo o co chodzi. Nie zapomnieliście nigdy średnika po deklaracji klasy? Porównajcie sobie jak na tego typu błąd reaguje gcc a jak kompilatory innych języków.
twonek
Akurat ten błąd jest bardzo dobrze pokazany przez nowsze wersje gcc: http://ideone.com/9iy0UB, i generalnie widać poprawę w jakości komunikatów błędów kompilatorów C++, ale ogólnie masz rację.
TO
  • Rejestracja:prawie 12 lat
  • Ostatnio:prawie 9 lat
  • Postów:47
3
0

Jak lubisz matmę to popatrz na język Julia (http://julialang.org/)

0

C## nie jest taki zły. Na pewno są gorsze a ten jest powiedziałbym jednym z łatwiejszych ( przynajmniej dla mnie bo wiadomo,że dla każdego jest łatwiejsze co innego).
Są w sieci różne kursy. O na przykład tutaj: http://strefakursow.pl/kursy/programowanie/kurs_programowania_w_c.html masz całe 9 godzin. Wiadomo,ze wszystkiego tam się nie nauczysz ale podstawy solidne masz. Trwa 9 godzin.

n0name_l
WTF? Co to za spam?
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)