
工程师同志,这是我开始在基辅理工学院任教的第四年。 在这段时间里,我积累了大量的代码示例和资料,约有90堂讲座 。 我必须说,在我整个职业生涯的整个过程中(这几乎是每天写代码的24年),我从未像过去几年那样与学生一起提高编程水平。 如果早先在我看来,简短,困难和强加于人的写作是技能的高度,那么现在我意识到,学生应该经过很少的解释就可以理解我的代码,否则它将无法正常工作。 我得出的结论是,这种能力不仅可以扩展到培训代码,而且可以扩展到整个工作代码。 此外,培训代码与工作代码不应有显着差异,因为我们会教会未来的工程师如何制作真实的系统,而不是培训系统。 在收到无数请求之后,我决定以屏幕录像的形式录制所有讲座,讲座结束后立即将其发送到YouTube。 在本学年,我计划录制100场讲座,其中23场已经出版 ,另外67场讲座的材料和10场新讲座的材料仍在准备中。
课程概念
大家都知道,在我们的行业中,基础工程教育存在重大问题:
- 大学课程通常过时了,还有很多不足之处,
- 普遍接受的术语没有形成(在纠纷中,我们经常将相同的事物称为不同的词,而将不同的事物称为相同的词),我们对此感到困惑,
- 任何认为自己的资历足以满足要求的人都可以轻松发布Internet上的文章和视频 ,
- 在编程中, 经验的积累会因人们迅速退出专业而受到阻碍 ,甚至根本的思想也会被周期性地重复,但是那些在前一轮工作中积累了经验的人很可能不再练习,并且无法告诉年轻的同事耙线和瓶颈在哪里。
构建基于JavaScript的课程当然是一项实验性的工作,但是对于现代IT界的任何人来说,这种语言当然都不会多余。 JavaScript开发人员本身经常接受较差的基础工程培训,并且缺乏有关数据结构,算法,基本抽象,模式,体系结构,范例和编程技术的基础知识。 现在,行业中编写的大多数代码在创建后不久就被丢弃,然后被重写并再次丢弃。 通常,除了面试以外,很少需要质量和知识。 最好制作低质量的代码并加以维护,或者丢弃该代码,并花更多的时间来重写它。 此外,我们的行业完全与科学脱节,市场营销人员有很多优点,因为我们已经不使用编程语言和抽象来进行编程,而是使用框架和库进行编程,然后将它们“包装”进一个漂亮的包装中。 我们通常是在没有任何科学知识的情况下从多维数据集组装所有东西,并且很少能回答为什么这样做的问题,而不能回答其他问题。 部件的所有内容已经很久以前就已经写好了,可以在Internet上找到所有内容,但是事实证明,一个部件不能与另一个部件共铸,也就是说,部分部件可以共模,但不能一起使用。 链接分开的代码比单独进行代码难得多。 发生这种情况的原因恰恰是由于缺乏系统的方法,术语分裂和专家的概念失步。 只有在意识形态上兼容的内容才能一起工作,这是基于一般理论和从该理论衍生的一般标准的。 我希望通过本课程,我将至少迈出一小步,以达成对业界至关重要的共识。
所有课程资料都可以在github上免费获得,并且讲座是开放的,可以免费参加。 每周我都会录制4堂课。 我们举办了更多的研讨会和工作坊,但没有记录。
课程结构
- 基本概念 :软件抽象,变量,运算符,数据类型,数组,结构,标量和引用类型,映射;
- 关键概念 :函数,上下文和范围,类和对象,原型,方法,lambda,纯函数,副作用,闭包,部分使用,currying,组成,高阶函数,回调,包装器,装饰器,杂质,事件,接口,单例,迭代器,功能对象,函子,monad,文件处理,线程,套接字,备注,继承,生成器,异步编程,处理,模块和依赖项,错误处理,工厂和池,计时器,正则表达式;
- 支持材料 :git,版本控制系统和程序包管理器,与控制台一起工作,测试,持续集成,日志记录,lint,优化和性能,消除内存泄漏,隐藏类,单态函数,泛型,垃圾回收,内存管理;
- 数据结构 :集合,数组和类型数组,缓冲区,列表,堆栈,队列,dec,二进制树和分层树,多维树,分支的旋转和平衡,集合,哈希图,图,扩展列表,异步队列,自动机,迭代数据结构和搜索;
- 扩展概念 :符号,代理,不同,期货和承诺,镜头,传感器,异步/等待,数据收集器,异步组合,异步适配器,异步迭代器,自省,反射,支架,控制反转和依赖注入,沙箱,分层体系结构组件方法,数据访问层,数据投影,文件系统监视,客户端-服务器和三链接体系结构,集群和平衡,协议设计,动态模块过载,元数据,din mical绑定,进程间交互;
- 代码示例和技术的综合使用:实时电子表格,在Web套接字上聊天,图形查询语言的实现,异步抽象元同步的替代库,在不同范式上比较相同任务的实现,功能编程样式的比较,应用程序结构的示例,node.js中处理程序的路由应用程序,沙箱中的代码隔离,事务对象;
- 编程范例 :命令式,结构式和非结构式,过程式,面向对象,原型,功能,逻辑,声明式,异步,反应式,事件,自动,广义,数据驱动编程,多范式,元编程。
参考文献
讲座日历分为两个mitap组: HowProgrammingWorks (这些是使用JavaScript示例进行编程的讲座)和NodeUA (这些是有关Node.js的讲座),我敦促希望参加讲座的每个人都亲自注册。 入场对每个人都是免费的,但是在组织上更容易估计学生人数。 纵观历史,我曾经有过600例病例和2例病例,投票率是不可预测的。
所有录制的视频均在同一天(讲座后10-20分钟) 出现在youtube频道上 。
讲座分为两个播放列表: 编程,JavaScript和Node.js。
我将演讲和资料的链接放在两个电报频道中: 编程和JavaScript,以及Node.js和其他更复杂的主题 。
有两个讨论和问题电报组: 编程和JavaScript,以及Node.js。
我的github帐户, HowProgrammingWorks上的培训资料库以及我们的社区库。
结论
我正在等待为课程增添新主题的建议,我希望能反介绍代码示例,包括将示例翻译为其他语言。 您的反馈将有助于改善课程。