Skip to content
This repository has been archived by the owner on Apr 7, 2023. It is now read-only.

Summary 2016

Doychin Atanasov edited this page Dec 20, 2016 · 6 revisions

Тук са изброени всички теми, които възнамеряваме да засегнем в този курс. Грубо казано, една тема отговаря на една лекция. Изнасяйки лекциите ще се опитаме да спазим реда, описан тук. Но не можем да го обещаем с пълна сигурност.

Нулева лекция

Както е традиция в нашите курсове, нулевата лекция ще е за запознаване на студентите с целите на курса. Ще обясним начините си на оценяване, начините за комуникация със студентите и всякакви административни детайли. Разбира, ще говорим доста за Go и защо бихте искали да го учите.

Въведение в Go

В тази лекция ще говорим за историята на езика, хората които го създават, както и неговите цели. След това, напълно очаквано, ще започнем със синтаксис, контролни структури, основни типове. А най - полезното в лекцията ще е обяснение как се създават Go проекти, как се компилират и изпълняват.

Функции и указатели

Ще говорим по какъв начин функциите в Go са по - интересни от обикновените функции, които се срещат в някои други езици. Ще покажем и как през 21-ви век указателите могат да са прости и мощни оръжия.

Структури от данни

Започвайки от обикновени масиви, в тази лекция ще се стигне до обяснение на структури и maps. В лекцията ще има и запознанство със slices, което е нещо уникално за Go. Ще обясним и много подробно какво всъщност е slice и как се използва ефективно.

Concurrency 1 (канали + goroutines)

Ще се говори за основните примитиви, позволяващи на езика да бъде изключително пригоден за конкурентно програмиране: канали и goroutines. Това е една от най - важните лекции в курса.

Типове и интерфейси

В лекцията ще става въпрос за типовата система на езика. Освен вградените, ще се показва и как могат да се създават нови типове и методи. Интересна част от типовата система са интерфейсите, на които ще се обърне специално внимание.

Concurrency 2 (sync, select)

В тази лекция ще покажем механизми за синхронизиране на работата между различни goroutines. Ще бъдат изследвани и няколко често срещащи се приома в конкурентното програмиране.

Error handling

Грешките и изключителните ситуации по време на изпълнение на една програма са неизбежни. В тази лекция ще се говори за идиоматичният начин за справяне с тях в Go. Става въпрос за error интерфейса, както и "паниката".

Тестове и документация

Всяка добра програма идва със своите тестове и документация. В Go инструментите за писане на тестове и генериране на документация са вградени. В тази лекция ще се покаже как могат да се използват по ефективен начин.

Web програмиране

Ще се покаже в дълбочина http пакета от стандартната библиотека. Като част от обяснението ще се види колко е лесно създаването на хубав HTTP сървър или клиент. След това ще се покаже и как само чрез стандартната библиотека може лесно да се генерира сигурен HTML.

go tools + best practices

Макар и млад, езика е предизвикал създаването на много и полезни инструменти. Тези инструменти позволяват на програмист, използващ езика, да следва най - добрите практики за писане на код без почти никакво усилие. В тази лекция ще покажем в употреба най - важните от инструментите и ще споменем за много от останалите.

Cgo

Лекция, в която ще става въпрос за това как Go програми могат да използват C библиотеки и обратното. Това е "фийчър" на езика, позволяващ му да стъпи върху десетилетия опит и код. Така се избягва излишно повторение на труд.

Go Runtime

В тази лекция стане въпрос за оптимизациите, които прави Go компилатора, runtime-a на езика и управлението на паметта. Последното включва обяснения за garbage collector-а и за това как е възможно Go програма да има милиони goroutines без да се свършва паметта на машината.

Бази от данни

(Ако има време) В тази лекция ще се покажат начини за връзка с различни бази данни. Ще бъде обяснена и схемата за database интерфейс и driver, които се използват за връзка с SQL бази данни.

Графичен интерфейс

(Ако има време) Ще покажем различни начини за създаване на GUI програми с Go.

Мрежово програмиране

(Ако има време) Ще покажем защо Go е считан за много подходящ език, когато става въпрос за мрежово програмиране. Това ще включва примери от стандартната библиотека, third-party библиотеки, както и малко идиоми.

Този документ е в процес на постоянно подобрение. Последната му версия може да бъде намерена на адрес: https://github.com/fmi/go-lectures/wiki/Summary-2016.

QR Barcode