学习资料

这里列举一些我发现也使用的学习资源,不定时更新,也欢迎评论.

AI&&ML

教程

  1. 1. 引言 — 动手学深度学习 2.0.0 documentation (d2l.ai)
  2. Practical Deep Learning for Coders - Practical Deep Learning (fast.ai)
  3. Zero to Mastery Learn PyTorch for Deep Learning
  4. microsoft/AI-For-Beginners: 12 Weeks, 24 Lessons, AI for All! (github.com)
  5. Machine Learning – Towards Data Science

推荐入门

ML 2023 Spring (ntu.edu.tw) 生成网络使用的是Diffusion Model

ML 2022 Spring (ntu.edu.tw) 生成网络使用的是GAN

Introduction to Generative AI 2024 Spring (ntu.edu.tw)

Zero to Mastery Learn PyTorch for Deep Learning pytorch学习

labml.ai 经典论文复现

Deep Learning Specialization [5 courses] (DeepLearning.AI) | Coursera

博客

  1. FastML
  2. Essays · Gwern.net
  3. Count Bayesie - A Probability Blog

编程语言

最新的JetBrains deverloper调查Languages - The State of Developer Ecosystem in 2023 Infographic | JetBrains: Developer Tools for Professionals and Teams

image-20240530213042066

image-20240530213250988

image-20240530213212648

不难看出,Rust的增长比较稳定,也是开发者愿意学习与并不像在近期迁移到其它语言的.Swift可以说取代Objective-C成为ios开发主力.

而Java,JavaScript,Python也就保持最高的使用率,其次是TypeScript,C++,C#,PHP,Go,Kotlin等.

此外在JVM生态中带有函数式编程的Scala成为了Top Paid的语言,不过这也许并不重要.

作为个人推荐,也是Java,Go,C#作为后端语言,JS/TS依然保持浏览器或Node/Bun/Deno的强力语言(前端工具链实在太多).Python作为AI开发,生态还是摆在这,对于研究人员友好,短期不可能被其它语言压过.

而Kotlin,Dart作为移动端跨平台开发语言,C/C++、Rust适合开发一些中间件和工具链,当然也可以用来造轮子学习计算机的语言.

作为遗老派,可以选择PHP,Ruby等开发Web程序,效率也不低.

JavaScript学习

  1. JavaScript Tutorial
  2. The Modern JavaScript Tutorial

前端学习

  1. Grid Garden - A game for learning CSS grid (cssgridgarden.com)
  2. Flexbox Defense
  3. Flexbox Froggy - A game for learning CSS flexbox

Python学习

  1. 前言 — python3-cookbook 3.0.0 文档
  2. Learn Python - Free Interactive Python Tutorial

不得不说,像js,python,Go还有Rust这些语言官方以及第三方社区都比较活跃,人们参与度也比较高,社区氛围也很好,学起来也很不错,教程文档也很多,质量也不低,非常吸引beginner进入.

设计

之前学习Web和移动端乃至所有稍微带点界面的应用开发时,发现界面设计甚至美术都很影响用户体验. 比如网站如何布局,配色以及字体,素材配图,此外还有loader以及logo设计等等,这些本身不属于或者不完全属于程序员的工作,但作为独立开发或者一些小项目,都还是需要考虑的.

界面布局

针对Web,桌面端和移动端的一些用户习惯和常用设计可能不完全相同,但是一些基本的想法还是类似的. 一个网站的布局和配色是影响用户视觉最关键的两点(我认为的).

经典的布局方式是可以总结出来的,但是随着人们审美意识改变可能也会出现一些新的布局设计.

可以使用Figma或者Sketch等进行页面设计,国内也有即使设计,墨刀,MasterGo以及Pixso.不仅拿来设计布局也可以画原型图等等.

在界面布局时也应该考虑到响应式等.

界面配色

配色其实还是很重要的,我自己在写网站时常常忽略这一点. 好的颜色搭配使得整个网站,讲究一个冷暖色调和搭配方案.

2020 设计师主流配色网站推荐 - 知乎 (zhihu.com)

loader

高清图、矢量图以及字体等资源

图片资源可以简单分为用于特别显示的高清大图以及一些工具类的矢量图.

主要害怕版权争议以及图像质量问题. 事实上可以直接谷歌搜图,不过为了高清的图像质量可以使用一些专业的网站.

另外矢量图有

Logo可以自己设计甚至使用AI创作,我之前使用过阿里的Logo设计,毕竟自己使用PS等工具还是差点技术.

英文字体使用google font, 中文字体就更多了

另外可以看看一些设计激发一些感觉.

目前的工作

本人主要开发一些Web,桌面端和移动端的应用程序,有些时候也复习点计算机基础和图形学等等.也会追一些AI热点.

Java

Java主要做的就是Web,移动端目前已经转向Kotlin Compose.而Java Web又跟Spring MVC以及Spring整套框架紧密相连,仿佛Java已经成了Spring的替身.不过这就是工业级Web应用的生态啊,你们有这样的生态吗?

至于Go,我很喜欢它的这种简洁性,虽然这也导致很多人对它评价不高,不过我更看重Go语言生态,相对来说跟Java重合有点多,但又比不过Java强大的工具链.

C++

造轮子的语言以及生态,可以通过SDL, SFML,Qt, 以及OpenGL等上手.个人感觉C++写的一个就是Linux服务器、音视频处理以及计算机图形这些方向,个人觉得做C++也可以考虑向音视频或者图形上面走,比较持久,也跟C++本身很搭.

应用层也可以写Unreal游戏.

除了c++的一些常用语法外还需要掌握方向的知识.

对于Modern Cpp,我建议使用vcpkg和cmake/xmake进行C++开发.

如果你有空闲时间,也可以考虑Rust.目前拿来重构一些开发工具链.

C

微软目前在推MAUI和Blazor,但是真不好说以后会怎样,毕竟有谷歌的Flutter之鉴,如果要做跨平台的桌面程序,可以考虑社区的Uno或者Avalonia. 如果就是Windows,WPF就比较稳定.

C#做Web也可以考虑,此外也有强大的Unity做游戏.

Kotlin

主要针对移动端,期待Compose的发展.

Dart

主要拿来写Flutter.

至于Python和JS/TS,目前感觉已经成了人人都会写的了,前者感觉更像是为一些数据科学研究者或编程小白的深度学习的编程语言和生态,也可以写写游戏脚本.后者主要也是配合Web写前端啥的.两者通用性都很高.

总结一下,通过C++学习一些编程基础和计算机知识,再通过Java/C#/Js这种高级语言开发更高层的应用.

当然直接使用C++开发应用也不是不行,主要需要依赖一些框架或者引擎,比如Qt,Unreal.

学习平台

  1. Cousera,Udemy,Udacity这种视频平台,一般会附带编程作业
  2. Top Free Resources for Developers | Zero To Mastery

一些博客平台比如Medium(目前褒贬不一)也有一些不错的文章.
此外Youtube上有很多频道非常不错,不过我还是更喜欢看文字.