[{"data":1,"prerenderedAt":968},["ShallowReactive",2],{"lekcja-\u002Flekcje\u002Fjavascript-czy-python-na-poczatek":3,"lekcje-others-\u002Flekcje\u002Fjavascript-czy-python-na-poczatek":967},{"id":4,"title":5,"body":6,"category":955,"cover":956,"date":957,"description":958,"extension":959,"meta":960,"navigation":256,"path":961,"readingTime":962,"seo":963,"sitemap":964,"stem":965,"__hash__":966},"lekcje\u002Flekcje\u002Fjavascript-czy-python-na-poczatek.md","JavaScript czy Python na początek? Przewodnik dla początkujących",{"type":7,"value":8,"toc":942},"minimark",[9,18,23,48,51,55,60,63,88,91,95,98,122,125,129,132,136,364,368,516,519,573,576,580,664,668,738,747,751,858,862,868,871,884,891,895,898,904,916,923,927,930,938],[10,11,12,13,17],"p",{},"To chyba najczęstsze pytanie, jakie słyszę od osób zaczynających z programowaniem: ",[14,15,16],"strong",{},"JavaScript czy Python?"," Uspokoję od razu, oba to bardzo dobry wybór na start. Cała reszta zależy od tego, co chcesz robić, i to właśnie rozłóżmy sobie po kolei.",[19,20,22],"h2",{"id":21},"krótka-odpowiedź","Krótka odpowiedź",[24,25,26,38],"ul",{},[27,28,29,30,33,34,37],"li",{},"Jeśli ciągnie Cię ",[14,31,32],{},"web i interfejsy"," (strony, aplikacje w przeglądarce, fullstack), zacznij od ",[14,35,36],{},"JavaScriptu",".",[27,39,40,41,44,45,37],{},"Jeśli bliżej Ci do ",[14,42,43],{},"danych, automatyzacji, backendu czy uczenia maszynowego",", zacznij od ",[14,46,47],{},"Pythona",[10,49,50],{},"A jeśli jeszcze nie wiesz? Zostań na chwilę, pod koniec dam Ci prostą zasadę.",[19,52,54],{"id":53},"do-czego-służy-każdy-z-nich","Do czego służy każdy z nich",[56,57,59],"h3",{"id":58},"javascript","JavaScript",[10,61,62],{},"JavaScript zaczynał jako język przeglądarki i wciąż jest jedynym, który działa w niej natywnie. Dziś spotkasz go jednak wszędzie:",[24,64,65,71,77,83],{},[27,66,67,70],{},[14,68,69],{},"frontend:"," interaktywne strony i aplikacje (React, Vue, Nuxt),",[27,72,73,76],{},[14,74,75],{},"backend:"," serwery w Node.js,",[27,78,79,82],{},[14,80,81],{},"aplikacje mobilne i desktopowe"," (React Native, Electron),",[27,84,85],{},[14,86,87],{},"narzędzia i automatyzacja.",[10,89,90],{},"Ucząc się JS, jednym językiem zbudujesz całą aplikację, od interfejsu po serwer. Dla początkujących to naprawdę duża zaleta.",[56,92,94],{"id":93},"python","Python",[10,96,97],{},"Python kojarzy się z czytelną składnią i tym, że nadaje się do wielu rzeczy naraz:",[24,99,100,106,112,117],{},[27,101,102,105],{},[14,103,104],{},"analiza danych i AI\u002FML"," (pandas, NumPy, PyTorch),",[27,107,108,111],{},[14,109,110],{},"backend"," (Django, FastAPI, Flask),",[27,113,114],{},[14,115,116],{},"automatyzacja i skrypty,",[27,118,119],{},[14,120,121],{},"nauka i badania.",[10,123,124],{},"Bywa polecany jako pierwszy język właśnie dlatego, że jego składnia jest prosta i miejscami przypomina zwykły angielski.",[19,126,128],{"id":127},"ten-sam-kod-javascript-vs-python","Ten sam kod: JavaScript vs Python",[10,130,131],{},"Teorię odłóżmy na bok, różnice najlepiej widać na przykładzie. Zróbmy w obu językach dokładnie to samo: z listy użytkowników wybierzmy imiona osób pełnoletnich.",[10,133,134],{},[14,135,59],{},[137,138,143],"pre",{"className":139,"code":140,"language":141,"meta":142,"style":142},"language-js shiki shiki-themes one-dark-pro","const users = [\n  { name: \"Ola\", age: 17 },\n  { name: \"Piotr\", age: 21 },\n  { name: \"Maja\", age: 30 },\n];\n\nconst adults = users\n  .filter((user) => user.age >= 18)\n  .map((user) => user.name);\n\nconsole.log(adults); \u002F\u002F [\"Piotr\", \"Maja\"]\n","js","",[144,145,146,167,199,222,245,251,258,271,310,335,340],"code",{"__ignoreMap":142},[147,148,151,155,159,163],"span",{"class":149,"line":150},"line",1,[147,152,154],{"class":153},"seHd6","const",[147,156,158],{"class":157},"sU0A5"," users",[147,160,162],{"class":161},"sjrmR"," =",[147,164,166],{"class":165},"sn6KH"," [\n",[147,168,170,173,177,180,184,187,190,192,196],{"class":149,"line":169},2,[147,171,172],{"class":165},"  { ",[147,174,176],{"class":175},"sVyAn","name",[147,178,179],{"class":165},": ",[147,181,183],{"class":182},"subq3","\"Ola\"",[147,185,186],{"class":165},", ",[147,188,189],{"class":175},"age",[147,191,179],{"class":165},[147,193,195],{"class":194},"sVC51","17",[147,197,198],{"class":165}," },\n",[147,200,202,204,206,208,211,213,215,217,220],{"class":149,"line":201},3,[147,203,172],{"class":165},[147,205,176],{"class":175},[147,207,179],{"class":165},[147,209,210],{"class":182},"\"Piotr\"",[147,212,186],{"class":165},[147,214,189],{"class":175},[147,216,179],{"class":165},[147,218,219],{"class":194},"21",[147,221,198],{"class":165},[147,223,225,227,229,231,234,236,238,240,243],{"class":149,"line":224},4,[147,226,172],{"class":165},[147,228,176],{"class":175},[147,230,179],{"class":165},[147,232,233],{"class":182},"\"Maja\"",[147,235,186],{"class":165},[147,237,189],{"class":175},[147,239,179],{"class":165},[147,241,242],{"class":194},"30",[147,244,198],{"class":165},[147,246,248],{"class":149,"line":247},5,[147,249,250],{"class":165},"];\n",[147,252,254],{"class":149,"line":253},6,[147,255,257],{"emptyLinePlaceholder":256},true,"\n",[147,259,261,263,266,268],{"class":149,"line":260},7,[147,262,154],{"class":153},[147,264,265],{"class":157}," adults",[147,267,162],{"class":161},[147,269,270],{"class":175}," users\n",[147,272,274,277,281,284,288,291,294,297,299,301,304,307],{"class":149,"line":273},8,[147,275,276],{"class":165},"  .",[147,278,280],{"class":279},"sVbv2","filter",[147,282,283],{"class":165},"((",[147,285,287],{"class":286},"s_ZVi","user",[147,289,290],{"class":165},") ",[147,292,293],{"class":153},"=>",[147,295,296],{"class":157}," user",[147,298,37],{"class":165},[147,300,189],{"class":175},[147,302,303],{"class":161}," >=",[147,305,306],{"class":194}," 18",[147,308,309],{"class":165},")\n",[147,311,313,315,318,320,322,324,326,328,330,332],{"class":149,"line":312},9,[147,314,276],{"class":165},[147,316,317],{"class":279},"map",[147,319,283],{"class":165},[147,321,287],{"class":286},[147,323,290],{"class":165},[147,325,293],{"class":153},[147,327,296],{"class":157},[147,329,37],{"class":165},[147,331,176],{"class":175},[147,333,334],{"class":165},");\n",[147,336,338],{"class":149,"line":337},10,[147,339,257],{"emptyLinePlaceholder":256},[147,341,343,346,348,351,354,357,360],{"class":149,"line":342},11,[147,344,345],{"class":157},"console",[147,347,37],{"class":165},[147,349,350],{"class":279},"log",[147,352,353],{"class":165},"(",[147,355,356],{"class":175},"adults",[147,358,359],{"class":165},"); ",[147,361,363],{"class":362},"sV9Aq","\u002F\u002F [\"Piotr\", \"Maja\"]\n",[10,365,366],{},[14,367,94],{},[137,369,372],{"className":370,"code":371,"language":93,"meta":142,"style":142},"language-python shiki shiki-themes one-dark-pro","users = [\n    {\"name\": \"Ola\", \"age\": 17},\n    {\"name\": \"Piotr\", \"age\": 21},\n    {\"name\": \"Maja\", \"age\": 30},\n]\n\nadults = [user[\"name\"] for user in users if user[\"age\"] >= 18]\n\nprint(adults)  # ['Piotr', 'Maja']\n",[144,373,374,384,408,428,448,453,457,501,505],{"__ignoreMap":142},[147,375,376,379,382],{"class":149,"line":150},[147,377,378],{"class":165},"users ",[147,380,381],{"class":161},"=",[147,383,166],{"class":165},[147,385,386,389,392,394,396,398,401,403,405],{"class":149,"line":169},[147,387,388],{"class":165},"    {",[147,390,391],{"class":182},"\"name\"",[147,393,179],{"class":165},[147,395,183],{"class":182},[147,397,186],{"class":165},[147,399,400],{"class":182},"\"age\"",[147,402,179],{"class":165},[147,404,195],{"class":194},[147,406,407],{"class":165},"},\n",[147,409,410,412,414,416,418,420,422,424,426],{"class":149,"line":201},[147,411,388],{"class":165},[147,413,391],{"class":182},[147,415,179],{"class":165},[147,417,210],{"class":182},[147,419,186],{"class":165},[147,421,400],{"class":182},[147,423,179],{"class":165},[147,425,219],{"class":194},[147,427,407],{"class":165},[147,429,430,432,434,436,438,440,442,444,446],{"class":149,"line":224},[147,431,388],{"class":165},[147,433,391],{"class":182},[147,435,179],{"class":165},[147,437,233],{"class":182},[147,439,186],{"class":165},[147,441,400],{"class":182},[147,443,179],{"class":165},[147,445,242],{"class":194},[147,447,407],{"class":165},[147,449,450],{"class":149,"line":247},[147,451,452],{"class":165},"]\n",[147,454,455],{"class":149,"line":253},[147,456,257],{"emptyLinePlaceholder":256},[147,458,459,462,464,467,469,472,475,478,481,484,487,490,492,494,497,499],{"class":149,"line":260},[147,460,461],{"class":165},"adults ",[147,463,381],{"class":161},[147,465,466],{"class":165}," [user[",[147,468,391],{"class":182},[147,470,471],{"class":165},"] ",[147,473,474],{"class":153},"for",[147,476,477],{"class":165}," user ",[147,479,480],{"class":153},"in",[147,482,483],{"class":165}," users ",[147,485,486],{"class":153},"if",[147,488,489],{"class":165}," user[",[147,491,400],{"class":182},[147,493,471],{"class":165},[147,495,496],{"class":161},">=",[147,498,306],{"class":194},[147,500,452],{"class":165},[147,502,503],{"class":149,"line":273},[147,504,257],{"emptyLinePlaceholder":256},[147,506,507,510,513],{"class":149,"line":312},[147,508,509],{"class":161},"print",[147,511,512],{"class":165},"(adults)  ",[147,514,515],{"class":362},"# ['Piotr', 'Maja']\n",[10,517,518],{},"Ten sam efekt, a kilka rzeczy od razu rzuca się w oczy:",[24,520,521,531,546,560],{},[27,522,523,526,527,530],{},[14,524,525],{},"Struktura kodu:"," JavaScript grupuje bloki klamrami ",[144,528,529],{},"{ }"," i kończy linie średnikami. Python używa do tego wcięć, tu odstępy nie są ozdobą, tylko częścią języka.",[27,532,533,536,537,540,541,545],{},[14,534,535],{},"Praca na kolekcjach:"," w JS łączysz metody ",[144,538,539],{},".filter().map()",", w Pythonie masz zwięzłe ",[542,543,544],"em",{},"list comprehension"," w jednej linii.",[27,547,548,551,552,555,556,559],{},[14,549,550],{},"Dostęp do danych:"," obiekt w JS (",[144,553,554],{},"user.age",") kontra słownik w Pythonie (",[144,557,558],{},"user[\"age\"]",").",[27,561,562,565,566,569,570,37],{},[14,563,564],{},"Konwencje nazw:"," w JS króluje ",[144,567,568],{},"camelCase",", w Pythonie ",[144,571,572],{},"snake_case",[10,574,575],{},"Zobaczmy jeszcze prostą funkcję z warunkiem:",[10,577,578],{},[14,579,59],{},[137,581,583],{"className":139,"code":582,"language":141,"meta":142,"style":142},"function grade(score) {\n  if (score >= 90) return \"5\";\n  if (score >= 50) return \"3\";\n  return \"2\";\n}\n",[144,584,585,601,627,649,659],{"__ignoreMap":142},[147,586,587,590,593,595,598],{"class":149,"line":150},[147,588,589],{"class":153},"function",[147,591,592],{"class":279}," grade",[147,594,353],{"class":165},[147,596,597],{"class":286},"score",[147,599,600],{"class":165},") {\n",[147,602,603,606,609,611,613,616,618,621,624],{"class":149,"line":169},[147,604,605],{"class":153},"  if",[147,607,608],{"class":165}," (",[147,610,597],{"class":175},[147,612,303],{"class":161},[147,614,615],{"class":194}," 90",[147,617,290],{"class":165},[147,619,620],{"class":153},"return",[147,622,623],{"class":182}," \"5\"",[147,625,626],{"class":165},";\n",[147,628,629,631,633,635,637,640,642,644,647],{"class":149,"line":201},[147,630,605],{"class":153},[147,632,608],{"class":165},[147,634,597],{"class":175},[147,636,303],{"class":161},[147,638,639],{"class":194}," 50",[147,641,290],{"class":165},[147,643,620],{"class":153},[147,645,646],{"class":182}," \"3\"",[147,648,626],{"class":165},[147,650,651,654,657],{"class":149,"line":224},[147,652,653],{"class":153},"  return",[147,655,656],{"class":182}," \"2\"",[147,658,626],{"class":165},[147,660,661],{"class":149,"line":247},[147,662,663],{"class":165},"}\n",[10,665,666],{},[14,667,94],{},[137,669,671],{"className":370,"code":670,"language":93,"meta":142,"style":142},"def grade(score):\n    if score >= 90:\n        return \"5\"\n    if score >= 50:\n        return \"3\"\n    return \"2\"\n",[144,672,673,688,703,711,723,730],{"__ignoreMap":142},[147,674,675,678,680,682,685],{"class":149,"line":150},[147,676,677],{"class":153},"def",[147,679,592],{"class":279},[147,681,353],{"class":165},[147,683,597],{"class":684},"sb9H8",[147,686,687],{"class":165},"):\n",[147,689,690,693,696,698,700],{"class":149,"line":169},[147,691,692],{"class":153},"    if",[147,694,695],{"class":165}," score ",[147,697,496],{"class":161},[147,699,615],{"class":194},[147,701,702],{"class":165},":\n",[147,704,705,708],{"class":149,"line":201},[147,706,707],{"class":153},"        return",[147,709,710],{"class":182}," \"5\"\n",[147,712,713,715,717,719,721],{"class":149,"line":224},[147,714,692],{"class":153},[147,716,695],{"class":165},[147,718,496],{"class":161},[147,720,639],{"class":194},[147,722,702],{"class":165},[147,724,725,727],{"class":149,"line":247},[147,726,707],{"class":153},[147,728,729],{"class":182}," \"3\"\n",[147,731,732,735],{"class":149,"line":253},[147,733,734],{"class":153},"    return",[147,736,737],{"class":182}," \"2\"\n",[10,739,740,741,743,744,746],{},"Logika identyczna, różni się głównie „opakowanie”: słowa kluczowe (",[144,742,589],{}," vs ",[144,745,677],{},"), nawiasy i wcięcia zamiast klamer. Gdy zrozumiesz jeden język, drugi czyta się niemal od ręki.",[56,748,750],{"id":749},"podsumowanie-różnic","Podsumowanie różnic",[752,753,754,768],"table",{},[755,756,757],"thead",{},[758,759,760,764,766],"tr",{},[761,762,763],"th",{},"Cecha",[761,765,59],{},[761,767,94],{},[769,770,771,783,794,808,821,832,843],"tbody",{},[758,772,773,777,780],{},[774,775,776],"td",{},"Główne zastosowanie",[774,778,779],{},"web, frontend, fullstack",[774,781,782],{},"dane, AI\u002FML, backend, automatyzacja",[758,784,785,788,791],{},[774,786,787],{},"Gdzie działa natywnie",[774,789,790],{},"przeglądarka + Node.js",[774,792,793],{},"interpreter na serwerze\u002Fkomputerze",[758,795,796,799,805],{},[774,797,798],{},"Struktura kodu",[774,800,801,802,804],{},"klamry ",[144,803,529],{}," i średniki",[774,806,807],{},"wcięcia",[758,809,810,813,817],{},[774,811,812],{},"Konwencja nazw",[774,814,815],{},[144,816,568],{},[774,818,819],{},[144,820,572],{},[758,822,823,826,829],{},[774,824,825],{},"Typowa pierwsza praca",[774,827,828],{},"frontend \u002F fullstack developer",[774,830,831],{},"dane \u002F backend \u002F ML",[758,833,834,837,840],{},[774,835,836],{},"Efekt „widać od razu”",[774,838,839],{},"tak, w przeglądarce",[774,841,842],{},"częściej w terminalu",[758,844,845,848,855],{},[774,846,847],{},"Krzywa startu",[774,849,850,851,854],{},"kilka pułapek (",[144,852,853],{},"this",", async)",[774,856,857],{},"łagodna, bardzo czytelna",[19,859,861],{"id":860},"trudność-rynek-pracy-i-ai","Trudność, rynek pracy i AI",[10,863,864,865,867],{},"Python ma opinię łatwiejszego na start: mniej zaskakujących zachowań, czysty zapis, mniej znaków interpunkcyjnych. JavaScript ma kilka pułapek (konwersje typów, ",[144,866,853],{},", asynchroniczność), ale w zamian od pierwszej chwili widzisz efekt swojej pracy w przeglądarce, a to potrafi mocno napędzić do nauki. Szczerze? W praktyce ta różnica w trudności jest mniejsza, niż się o niej mówi, dużo ważniejsze jest to, dokąd dany język Cię prowadzi.",[10,869,870],{},"A prowadzi w konkretne miejsca, bo oba mają ogromny rynek:",[24,872,873,879],{},[27,874,875,878],{},[14,876,877],{},"JavaScript\u002FTypeScript"," rządzi w web developmencie i zwykle jest najkrótszą drogą do pierwszej pracy jako frontend lub fullstack developer.",[27,880,881,883],{},[14,882,94],{}," króluje w danych, AI\u002FML i backendzie, więc świetnie sprawdzi się, jeśli celujesz właśnie w te obszary.",[10,885,886,887,890],{},"Warto też obalić jeden mit: „AI to tylko Python”. To prawda, że same modele trenuje się w Pythonie, ale ",[14,888,889],{},"aplikacje z AI"," coraz częściej powstają w ekosystemie JavaScriptu. Integracja z modelami przez API, RAG, agenci czy tool calling wychodzą w JS\u002FTS równie dobrze, a często wygodniej łączą się z warstwą webową (dlatego w mojej ścieżce fullstack AI jest wpleciona właśnie w JS\u002FTS). Krótko mówiąc: jeśli myślisz o pracy w IT „ogólnie” i lubisz od razu widzieć efekty, JavaScript daje bardzo konkretną i popularną ścieżkę: frontend → fullstack, z AI po drodze.",[19,892,894],{"id":893},"jak-wybrać-i-zacząć","Jak wybrać i zacząć",[10,896,897],{},"Jeśli nadal się wahasz, zadaj sobie jedno pytanie:",[899,900,901],"blockquote",{},[10,902,903],{},"Co chcę zbudować jako pierwsze, coś, co widać w przeglądarce, czy coś, co przetwarza dane?",[24,905,906,911],{},[27,907,908,909,37],{},"„Coś, co widać” → ",[14,910,59],{},[27,912,913,914,37],{},"„Coś, co przetwarza dane albo automatyzuje” → ",[14,915,94],{},[10,917,918,919,922],{},"I najważniejsze: ",[14,920,921],{},"nie przywiązuj się do tego wyboru",". Pierwszy język to nie ślub na całe życie, gdy dobrze opanujesz jeden, drugi wejdzie Ci znacznie łatwiej, bo fundamenty (zmienne, pętle, funkcje, struktury danych) są wspólne. Uważaj tylko na jeden częsty błąd początkujących: naukę JS i Pythona równolegle „dla pewności”. To zwykle spowalnia jedno i drugie. Wybierz jeden język, dojdź do poziomu, na którym budujesz działające projekty, i dopiero wtedy, jeśli pojawi się realna potrzeba, dołóż drugi.",[19,924,926],{"id":925},"chcesz-dobrać-ścieżkę-pod-siebie","Chcesz dobrać ścieżkę pod siebie?",[10,928,929],{},"Uczę zarówno JavaScriptu\u002FTypeScriptu (aż po fullstack w Vue\u002FNuxt), jak i Pythona (fundamenty, backend, dane), zawsze projektowo i z AI używanym z głową. Na bezpłatnej konsultacji pomogę Ci wybrać język pod Twój cel i ułożyć realny plan nauki.",[10,931,932,937],{},[933,934,936],"a",{"href":935},"\u002Fkontakt","Umów bezpłatną konsultację"," i zacznij od dobrej decyzji.",[939,940,941],"style",{},"html pre.shiki code .seHd6, html code.shiki .seHd6{--shiki-default:#C678DD}html pre.shiki code .sU0A5, html code.shiki .sU0A5{--shiki-default:#E5C07B}html pre.shiki code .sjrmR, html code.shiki .sjrmR{--shiki-default:#56B6C2}html pre.shiki code .sn6KH, html code.shiki .sn6KH{--shiki-default:#ABB2BF}html pre.shiki code .sVyAn, html code.shiki .sVyAn{--shiki-default:#E06C75}html pre.shiki code .subq3, html code.shiki .subq3{--shiki-default:#98C379}html pre.shiki code .sVC51, html code.shiki .sVC51{--shiki-default:#D19A66}html pre.shiki code .sVbv2, html code.shiki .sVbv2{--shiki-default:#61AFEF}html pre.shiki code .s_ZVi, html code.shiki .s_ZVi{--shiki-default:#E06C75;--shiki-default-font-style:italic}html pre.shiki code .sV9Aq, html code.shiki .sV9Aq{--shiki-default:#7F848E;--shiki-default-font-style:italic}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sb9H8, html code.shiki .sb9H8{--shiki-default:#D19A66;--shiki-default-font-style:italic}",{"title":142,"searchDepth":201,"depth":201,"links":943},[944,945,949,952,953,954],{"id":21,"depth":169,"text":22},{"id":53,"depth":169,"text":54,"children":946},[947,948],{"id":58,"depth":201,"text":59},{"id":93,"depth":201,"text":94},{"id":127,"depth":169,"text":128,"children":950},[951],{"id":749,"depth":201,"text":750},{"id":860,"depth":169,"text":861},{"id":893,"depth":169,"text":894},{"id":925,"depth":169,"text":926},"Programowanie",null,"2026-06-17","JavaScript czy Python jako pierwszy język programowania? Porównanie zastosowań, rynku pracy, trudności i ścieżek rozwoju, plus prosta zasada wyboru dla początkujących.","md",{},"\u002Flekcje\u002Fjavascript-czy-python-na-poczatek","7 min",{"title":5,"description":958},{"loc":961},"lekcje\u002Fjavascript-czy-python-na-poczatek","0fauef5z5KpG8xnE16deo8PxoAcyyXFwtsP9OPOTTh4",[],1783469986406]