Jump to content

Како почети учење програмирања?

Оцени ову тему


Препоручена порука

пре 15 часа, Grizzly Adams рече

Не смеш да их посматраш као људе, него као неке безличне аутомате којима треба притиснути одговарајуће дугмиће. Јер они то и јесу.

 

Mongol General: Wrong! Conan! What is best in life?
Conan: To crush your enemies, see them driven before you, and to hear the lamentation of their women.

Link to comment
Подели на овим сајтовима

  • Одговори 142
  • Креирано
  • Последњи одговор

Популарни чланови у овој теми

Нека се изјасне учитељи, али мислим да је ово одлично, има одговора на већину почетничких питања, као и многе ресурсе:

https://www.reddit.com/r/learnprogramming/wiki/faq

Link to comment
Подели на овим сајтовима

пре 3 минута, Аурор рече

Нека се изјасне учитељи, али мислим да је ово одлично, има одговора на већину почетничких питања, као и многе ресурсе:

https://www.reddit.com/r/learnprogramming/wiki/faq

Овај увод делује веома добро.

ΜΟΛΩΝ ΛΑΒΕ

Link to comment
Подели на овим сајтовима

пре 8 минута, Juanito рече

@Grizzly Adams

Зашто су HTML+CSS овако компликовани у односу на, рецимо, XAML?

Шта знам... Претпостављам зато што су настајали "спонтано" током дугог периода, док је XAML дизајниран одједном на основу тог претходног искуства.

Можда централно планирање ипак ради... ;)

ΜΟΛΩΝ ΛΑΒΕ

Link to comment
Подели на овим сајтовима

Да бих научио Node.js, желим да напишем апликацију која деци помаже да науче и вежбају рачунске операције. За сада ме занима само одузимање, али је добра ствар што исти графички интерфејс могу да искористим касније за све остало. За неко првобитно осмишљавање апликације су најбољи оловка и папир (или оловка и таблет). Кључна је оловка и скицирање руком. У стварности најчешће радите по наруџбини, тако да од клијента добијете захтеве апликације. Тачније, морате да их извучете из њих софистицирним техникама испитивања које вас квалификују за посао у некој од тајних служби. Онда програмери и дизајнери заједно раде да то све имплементирају. Ево скице апликације коју сам наумио и почео да имплементирам:

a2vryw.png

Наравно, ово је само део екрана, део који ми је сада битан и део који ће се наћи негде, можда након текста који објашњава како се одузима у колонама.

Читава логика (”мозак” који зна све детаље о томе како да обавља рачунске операције корак по корак) се налази на серверу. Клијент је глуп, зна само да прикаже на екрану шта му сервер каже, надгледа шта ученик ради и обавештава сервер о томе. Онда сервер то детаљно анализира и, на пример, шаље поруку клијенту да постоји грешка у резултату у другој колони с десна. Клијент наглашава колону да ученик може да је јасно види и боји грешку у црвено. Педагошки је боље да се ученику не каже одмах где је грешка, него тек ако пита притискајући знак питања, као што је приказано на скици.

Ученици имају потпуну слободу да едитују било који од бројева, скоро као да раде на папиру. То је мало теже дизајнирати са user experience тачке гледишта, али у супротном би интерфејс био превише ригидан педагошки јер би онемогућио неке од честих грешака. Ученици такође могу да питају који је следећи корак или да затраже читаво ”корак по корак” решење.

Е сад, да би ово све радило у реалном времену, потребна је стална конекција између клијента и сервера, као у чет апликацијама или онлајн играма. За Node.js то могу да постигнем са SOCKET.IO. Оно што не знам је да ли је добра пракса да сва логика буде а серверу у real-time апликацијама или је боље део логике пренети на клијент. Ако је ово друго случај, како одлучујем шта треба да ради клијент, а шта сервер? Који су критеријуми? Овде би можда, у принципу, могло чак и све на клијент. И како се то ради ако клијент и сервер говоре различитим језиком, као у ASP.NET? Да ли просто дуплираш код? @Grizzly Adams

Link to comment
Подели на овим сајтовима

On 3/18/2017 at 8:43, uros рече

A sad vezano za temu: K&R je super knjiga koja je ustvari zbirka konkretnih programerskih zadataka. Cim savladate neki od koncepta odma se pise program koji to demonstrira. A primorace vas da koristite kompajler i da odete dosta blizu masine sa jedne strane, a da sve vreme mozete sve da razumete jer je jako logicno i lepo napisana.

Posle C-a mocicete sa lakocom da naucite neki drugi high-level programski jezik i da se bacite na konkretne moderne zadatke web programiranja, ali i bilo koje druge vrste programiranja. 

To su moja 2 centa. Ja sam krenuo da ucim obrnuto od scripting jezika da automatizujem svakodnevni posao, pa "nadole" ka masini. I dok se nisam naterao da sednem i preletim dobar deo K&R-a mnogo sam sve sporije kapirao i ucio. Dakle, ja nisam isao odozgo nagore, ali mi se posle mog iskustva cini da je to ipak najbrzi nacin da se postave jaaaako dobri temelji za kasniji mnogo brzi napredak.

Sta mislis Grizli, mislis da je brze odmah uleteti u konkretne stvari?

Хвала за књигу и информацију. Јел има негде овде да се купи та књига?

Христос Воскресе!

 

Ваистину Воскресе!

Link to comment
Подели на овим сајтовима

пре 2 часа, Juanito рече

Е сад, да би ово све радило у реалном времену, потребна је стална конекција између клијента и сервера, као у чет апликацијама или онлајн играма. За Node.js то могу да постигнем са SOCKET.IO. Оно што не знам је да ли је добра пракса да сва логика буде а серверу у real-time апликацијама или је боље део логике пренети на клијент. Ако је ово друго случај, како одлучујем шта треба да ради клијент, а шта сервер? Који су критеријуми? Овде би можда, у принципу, могло чак и све на клијент. И како се то ради ако клијент и сервер говоре различитим језиком, као у ASP.NET? Да ли просто дуплираш код? @Grizzly Adams

Ретке су веб апликације којима треба стално отворена конекција. Веб је направљен да ради по принципу захтев-одговор-прекид.

Овде мислим да ти треба функционалност на клијенту (нпр. jQuery или сл.) па онда на крају само "позовеш" сервер да снимиш учеников резултат. Или ако имаш низ задатака, онда између сваког скокнеш до сервера. Треба да избегаваш превише "четовања" између клијента и сервера јер то успорава UI и оптерећује сервер. Ако имаш пар хиљада корисника и позива се сервер на сваки притиснут тастер, у невољи си... :)

ΜΟΛΩΝ ΛΑΒΕ

Link to comment
Подели на овим сајтовима

пре 30 минута, Grizzly Adams рече

Ретке су веб апликације којима треба стално отворена конекција. Веб је направљен да ради по принципу захтев-одговор-прекид.

Овде мислим да ти треба функционалност на клијенту (нпр. jQuery или сл.) па онда на крају само "позовеш" сервер да снимиш учеников резултат. Или ако имаш низ задатака, онда између сваког скокнеш до сервера. Треба да избегаваш превише "четовања" између клијента и сервера јер то успорава UI и оптерећује сервер. Ако имаш пар хиљада корисника и позива се сервер на сваки притиснут тастер, у невољи си... :)

Па то и јесте проблем. Мени овде буквално треба надгледање сваког корисниковом ”покрета” од стране компликоване ”машинерије”. Е-Тутор је у неку руку упрошћена симулација људског тутора. Пази да ученик не оде превише у кривом правцу, али такође пази да га не прекида за сваку ситницу и пушта га да сам увиди грешку. Да би то одлучио, мора мало да рачуна. Машинерија је прегломазна за клијент (не у овом једноставном примеру, него ако бих правио тутор за читаво градиво математике, на пример).  И ту не мислим само на перформансе, него и на инжењеринг. У питању су стотине хиљада линија кода, JavaScript баш и није дизајниран за то, не помажу претерано ни ти оквири, можда мало. Поред тога, ова чудеса су адаптивна и не реагују исто кад Миле нешто уради и кад Јанко нешто уради, него се прилагођавају на основу података о тим корисницима који су сачувани у бази на серверу и машинерија за рачунање мора да има приступ томе.

У суштини, таква апликација по мени и није за web, већ за десктоп или евентуално таблет (ови новији су довољно јаки да то изнесу), али данас је web изгледа незамењив.

Зар ”стално отворена конкекција” није баш због тога да би се избегло

пре 30 минута, Grizzly Adams рече

превише "четовања" између клијента и сервера јер то успорава UI и оптерећује сервер. Ако имаш пар хиљада корисника и позива се сервер на сваки притиснут тастер, у невољи си..

?

И зар баш то не раде онлајн игре које треба да раде компликовне ствари нон-стоп, јер је то помало слично овом мом проблему? Не верујем је да је читава она вештачка интелигенција из игара у браузеру. Или јесте? Пошто овде само вежбам, небитно је, али шта би ти радио у оваквој ситуацији у стварности?

Ако је одговор да у овом случају Web није добар избор  и да га треба баталити, то је заправо одговор кога прижељкујем да чујем. :smeh1:

Link to comment
Подели на овим сајтовима

Па има ситуација где не може да се избегне, само ми се чини да овде не мора толико да се компликује. Бар за почетак.

Компликованој логици није место на (веб) клијенту, наравно. То је UI и ништа друго, без обзира колико Javascripta нагурао. Само шминка.

Ти направи логику као засебну компоненту на серверу, па после можеш да експериментишеш како и када ће она бити позвана:

1) На сваки тастер.
2) Кад корисник пређе на ново поље.
3) Периодично у позадини на "тајмер".
4) На корисников захтев, посебно дугме "помоћ".
... итд.

То је после "фино подешавање", не мораш све одлуке да донесеш у старту. Програмирање је увек процес учења.

ΜΟΛΩΝ ΛΑΒΕ

Link to comment
Подели на овим сајтовима

пре 3 часа, Juanito рече

тако да од клијента добијете захтеве апликације. Тачније, морате да их извучете из њих софистицирним техникама испитивања које вас квалификују за посао у некој од тајних служби

:laugh1:

  • Волим 1

"Ви морате упознати земаљско да би сте га волели, а Божанско се мора волети да би се упознало." Паскал "Свако искључиво логичко размишљање је застрашујуће: без живота је и без плода. Рационална и логична особа се тешко каје." Шмеман "Always remember - your focus determines your reality." Qui-Gon Jinn

Link to comment
Подели на овим сајтовима

пре 22 минута, Grizzly Adams рече

1) На сваки тастер.
2) Кад корисник пређе на ново поље.
3) Периодично у позадини на "тајмер".
4) На корисников захтев, посебно дугме "помоћ".
... итд.

Управо то и радим тренутно. Отрилике је у овом конкретном случају ”кад пређе на ново поље” или кад ”напише нешто у неком пољу”. У неком другом може да буде чак и кад је ”миш на неком пољу”.

Ово што си написао сам знао од почетка јер тако раде све апликације без обзира да ли су на вебу или декстопу, једино што не шаљу захтв на сервер, него је модел на клијенту. Али нисам сигуран да смо се скроз разумели, тј. нисам сигуран да ли разумеш шта ме тачно ”мучи”. 

Рецимо, Јанко напише одговор у погрешно поље и Пера такође уради исто. Желим да одлучим шта ћу да урадим у том тренутку и шаљем захтев на сервер. Сервер погледа део Микиног и Јанковог профила из базе (који су можда учитани у рам ради перформанси) и одлучи да Мика то често ради јер је вероватно неспретан или нервозан и да га треба пустити јер је у прошлости то увек сам исправљао, док је Јанко направио пар пута исту грешку коју је пренео у даље кораке и вероватно је да има ту и ту рупу у знању, те му треба дати тај и тај фидбек пре него што поново забрља све и изгуби време ни за шта. Е сад, можда је Јанко још нешто урадио у међувремену док ми није стигао фидбек, па можда треба и то да укомбинујем и проверим. Знам, знам, можда је боље онемогућити Јанка да настави док не видим шта ћу, али замисли да није, замисли да је нека образовна игра у питању. Не можеш само да зауставиш игру, мораш константно да покушаваш да пронађеш најоптималнији фидбек на основу свих информација које купиш из интерфејса и са сервера.

Одлука о томе колико компликована апликација треба да буде није инжењерска, о томе одлучују, на пример, наставници математике заједно са психолозима и педагозима и одлучили су баш ово горе што сам написао. Хоће да примене најновија сазнања из когнитивне психологије и кажу да мора тако да ради. Не могу ја као програмер да им кажем: ”е превише вам је то компликовано, немају појма ти психолози”, него морам да видим како ми је најбоље да одрадим. А траже web јер је школа (приватна, наравно :ani_biggrin:) купила 300 Chromebook-ова за своје ученике. Могу једино да им кажем да су направили лош избор рачунара и да им треба неки десктоп са правим OS-ом или таблет за овакву апикацију.

Link to comment
Подели на овим сајтовима

@Grizzly Adams

Немој да мислиш да ћу сад у овом примеру да компликујем оволико, ни у лудилу. :smeh1: 

Него питам да бих што више информација имао кад ускоро заиста будем морао да начиним неке техничке изборе. И неће нужно та будућа апликација бити за учење, радије бих циљао одређене индустријске кориснике који су спремни да плате, него ће имати сличне захтеве и базираће се не сличним теоријским принципима. 

За сада сам најближи десктоп-мобилној комбинацији.

Link to comment
Подели на овим сајтовима

Звучи веома занимљиво. Прилично сам сигуран сам да у индустрији постоји потреба за тим. Они доста пажње обраћају на едукацију запослених сад.

Још један коментар у вези "отворене конекције" - у том случају се обично праве посебне серверске апликације које користе TCP/IP, не користи се HTTP протокол и web server.

  • Волим 1

ΜΟΛΩΝ ΛΑΒΕ

Link to comment
Подели на овим сајтовима

Придружите се разговору

Можете одговорити сада, а касније да се региструјете на Поуке.орг Ако имате налог, пријавите се сада да бисте објавили на свом налогу.

Guest
Имаш нешто да додаш? Одговори на ову тему

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Креирај ново...