作者pponywong (pony)
看板Tech_Job
标题Re: [请益] 学编译器的出路好吗?
时间Tue Jul 23 11:28:47 2019
※ 引述《sooge (喜欢小女友Yerin )》之铭言:
: 小弟不才现在资工研究所还没有找到教授
: 小弟背景是学店电机系毕业
: 在校成绩60%
: 期间只修了一堆爽课混毕业
: 没有一项技能可以拿来说嘴
: 工数 电子 电磁 电路都很差
: 真要说也只有弄专题要用的arduino有学到东西而已
: 本人"极度"讨厌硬体,超级无敌他妈讨厌那种,单纯觉得冰冷的电子元件很没生命力很乏味
: 大二大三时每周最讨厌的课就是电子学实验,修课都修到快忧郁症,超级G8讨厌
: 大学选系因为不了解自己兴趣所向才选了以後出路比较好的电机系就读
: 没想到这麽不合自己口味
: 现在有在网路上学ML的相关课程,会一点数据处理
: 虽然程式基础不好学的慢但因为是自己喜欢的课程所以学起来满有成就感的
: 如果有在做ML和DL的老师愿意收我当然是很好
: 没有的话就只好找专攻编译器的老师当指导教授
: 其实我也不知道编译器是在干嘛
: 台湾做这个的人很少?
: 查了一下资料但还不是很懂
: 主要是在写组合语言和LLVM是吗?
: 学这个会很操吗?听说有学生修这个课期末的project程式码都是上千行起跳
: 之前有修过微算机8051写组合语言 不特别讨厌和感兴趣
: 但就是当时程式差程式码又多修起来有点辛苦
: 现在只想学个一技之长
: 不排斥编译器这个领域,只是以後毕业靠这个吃饭出路好吗?
: 台湾学会编译器容易找的到工作吗?编译器偏底层学起来是不是超难?
: 推荐我这个半路出家基础烂烂的学生选吗?
: 不知道这两年会不会水深火热
: 请求各位大大帮我解答个疑惑,有任何意见我都会听的
: 谢谢~
: -----
: Sent from JPTT on my Asus ASUS_X00QD.
其实编译器很多种 看你指的是哪一种
如果是单纯 程式码 转成 executable machine code 的话
是最简单的
软体的程式语言 大部分都是 control flow
不外乎 if-else, for-while loop, function call/jump
好一点的就包含资料封装 继承 多型之类的
目前市面上的语言都有类似语法 去实作上述功能
我想一般公司也不会特地去发明一个语言 大概都是用现有的语言就好了
所以 compliler front-end parser 通常都不会碰到 因为别人早就做好了
而且技术不外乎是 LL LR LALR 之类的 (compiler很久以前学的, 有错请更正)
至於 backend-end 范围就很广 一般人说做compiler 就是这种
有从语法树(AST)分析的 也有从 control flow 做最佳化的
像是 peephole optimization, data-flow optimizations, loop unrolling
之类的 再进阶就要看target machine的 pipeline 做平行运算之类的
或是使用 SIMD 指令
目前做 compiler 最夯的大概就是从 LLVM 开始着手 毕竟软体架构好
文件也多 Apple也从 GCC 跳到 LLVM
也有人拿 LLVM 拿来做 数学软体的 script language 像是 Julia (不是AV女优)
compiler 要做出有技术性的 通常都要搞出虚拟机之类的
做出虚拟机 表示可以订出语言的独特性 型态转换, 记忆体配置, 线程 之类的
像是 C#, Java, Python, NodeJS
这要学只能去找 source code 来看了...
上述是软体程式语言
硬体程式语言 也有所谓的compiler 或者叫 hardware synthesizer
比较合适 就是将硬体描述语言 生成硬体逻辑闸
这我没学过 没办法给你甚麽有用资讯 只能给你科普一下
至於学生写code破千行 就觉得很操 ...只能说 还不及格阿....
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.137.59.128 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Tech_Job/M.1563852530.A.804.html
※ 编辑: pponywong (220.137.59.128 台湾), 07/23/2019 11:35:28
1F:→ jun0325: 现在ic大厂很多都在徵AI chip compiler 07/23 11:32
2F:推 miname: 硬体描述语言比较偏向EDA的floor planning 07/23 11:41
3F:→ miname: 跟一般compiler最佳化不一样 07/23 11:43
4F:→ miname: AI那边的compiler又是另一回事,最基本就是op实作 07/23 11:45
5F:→ miname: 传统compiler最佳化的du ud-chain基本上没用 07/23 11:46
6F:推 miname: 研究所真的只是过程,都有教授做硬体的过几年上新闻自称资 07/23 11:54
7F:→ miname: 安专家,也有VLSI的教授转医疗资讯系统的 07/23 11:54
8F:→ a9228097: codegen一点都不简单, 除非你指的是产生没优化的code 07/23 12:17
9F:→ a9228097: 另外有些资安会需要熟frontend的人,ex. obfuscation 07/23 12:18
10F:推 miname: 我没说简单啊,我只说传统的compiler优化用不上没说不能有 07/23 13:20
11F:→ miname: 其他优化方案 07/23 13:21
12F:→ pponywong: a网友 应该是回我的话啦 我说的简单是对比其他compiler 07/23 13:25
13F:→ pponywong: 这种编译器是比较直观的 像是虚拟机 中间码 硬体生成 07/23 13:26
14F:→ pponywong: 会比直接生出 machine code 跟需要很多知识 07/23 13:27
15F:→ pponywong: 我想读过资工的都了解 compiler 一点都不好做 07/23 13:28
16F:→ pponywong: 尤其是大部人人都只有求学阶段碰过而已 在业界又是一回 07/23 13:29
17F:→ pponywong: 事了 07/23 13:29
18F:推 YAYA6655: 资工毕业,能写compiler的不到1% 07/23 22:44
19F:→ YAYA6655: 好比资工OS必修,有几只猫能深入? 07/23 22:44
20F:推 kidbaby: 同意楼上 07/23 23:31
21F:推 qazsedcft402: OS真的要深入真的是没完没了 07/24 00:46
22F:→ shooter555: OS最主要还是针对kernel部份学 但kernel日新月异 07/24 09:36
23F:→ shooter555: 一下子没跟而已就差很多了 07/24 09:37
24F:推 landattack : 感谢! 08/12 18:50