-
Notifications
You must be signed in to change notification settings - Fork 20
Summary 2016
Тук са изброени всички теми, които възнамеряваме да засегнем в този курс. Грубо казано, една тема отговаря на една лекция. Изнасяйки лекциите ще се опитаме да спазим реда, описан тук. Но не можем да го обещаем с пълна сигурност.
Както е традиция в нашите курсове, нулевата лекция ще е за запознаване на студентите с целите на курса. Ще обясним начините си на оценяване, начините за комуникация със студентите и всякакви административни детайли. Разбира, ще говорим доста за Go и защо бихте искали да го учите.
В тази лекция ще говорим за историята на езика, хората които го създават, както и неговите цели. След това, напълно очаквано, ще започнем със синтаксис, контролни структури, основни типове. А най - полезното в лекцията ще е обяснение как се създават Go проекти, как се компилират и изпълняват.
Ще говорим по какъв начин функциите в Go са по - интересни от обикновените функции, които се срещат в някои други езици. Ще покажем и как през 21-ви век указателите могат да са прости и мощни оръжия.
Започвайки от обикновени масиви, в тази лекция ще се стигне до обяснение на структури и maps. В лекцията ще има и запознанство със slices, което е нещо уникално за Go. Ще обясним и много подробно какво всъщност е slice и как се използва ефективно.
Ще се говори за основните примитиви, позволяващи на езика да бъде изключително пригоден за конкурентно програмиране: канали и goroutines. Това е една от най - важните лекции в курса.
В лекцията ще става въпрос за типовата система на езика. Освен вградените, ще се показва и как могат да се създават нови типове и методи. Интересна част от типовата система са интерфейсите, на които ще се обърне специално внимание.
В тази лекция ще покажем механизми за синхронизиране на работата между различни goroutines. Ще бъдат изследвани и няколко често срещащи се приома в конкурентното програмиране.
Грешките и изключителните ситуации по време на изпълнение на една програма са неизбежни. В тази лекция ще се говори за идиоматичният начин за справяне с тях в Go. Става въпрос за error
интерфейса, както и "паниката".
Всяка добра програма идва със своите тестове и документация. В Go инструментите за писане на тестове и генериране на документация са вградени. В тази лекция ще се покаже как могат да се използват по ефективен начин.
Ще се покаже в дълбочина http
пакета от стандартната библиотека. Като част от обяснението ще се види колко е лесно създаването на хубав HTTP сървър или клиент. След това ще се покаже и как само чрез стандартната библиотека може лесно да се генерира сигурен HTML.
Макар и млад, езика е предизвикал създаването на много и полезни инструменти. Тези инструменти позволяват на програмист, използващ езика, да следва най - добрите практики за писане на код без почти никакво усилие. В тази лекция ще покажем в употреба най - важните от инструментите и ще споменем за много от останалите.
Лекция, в която ще става въпрос за това как Go програми могат да използват C библиотеки и обратното. Това е "фийчър" на езика, позволяващ му да стъпи върху десетилетия опит и код. Така се избягва излишно повторение на труд.
В тази лекция стане въпрос за оптимизациите, които прави Go компилатора, runtime-a на езика и управлението на паметта. Последното включва обяснения за garbage collector-а и за това как е възможно Go програма да има милиони goroutines без да се свършва паметта на машината.
(Ако има време) В тази лекция ще се покажат начини за връзка с различни бази данни. Ще бъде обяснена и схемата за database интерфейс и driver, които се използват за връзка с SQL бази данни.
(Ако има време) Ще покажем различни начини за създаване на GUI програми с Go.
(Ако има време) Ще покажем защо Go е считан за много подходящ език, когато става въпрос за мрежово програмиране. Това ще включва примери от стандартната библиотека, third-party библиотеки, както и малко идиоми.
Този документ е в процес на постоянно подобрение. Последната му версия може да бъде намерена на адрес: https://github.com/fmi/go-lectures/wiki/Summary-2016.