社区
C语言
帖子详情
操作系统和编译原理对一个程序员作用大讨论
liansdan
2003-10-16 04:22:40
大家各抒已见!!!
...全文
519
64
打赏
收藏
操作系统和编译原理对一个程序员作用大讨论
大家各抒已见!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
64 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
program2100
2003-10-26
打赏
举报
回复
操作系统和编译原理不能不学,除非你甘愿做......(说出来会挨揍的)。看看这两门课程对应的是什么,操作系统 + 编译器,程序员缺了这两个玩意,干脆就回家去吧。
pengwjeagles
2003-10-26
打赏
举报
回复
先学再说!,没有实践就没有发言权!
东西学了,肯定有用!
andy_jqh
2003-10-25
打赏
举报
回复
如果这个没有用 那么什么有用? 各种各样的语言学得越多越有用么?
bbcallen
2003-10-25
打赏
举报
回复
个人觉得 如果只是把编译原理用来当作代码优化的指导工具,那就太委屈他了
就好比拿青龙偃月刀去裁纸
有经验的程序员要想写出特别难看的代码,也是相当困难的
我们应当相信编译器会比我们所想象的做得还要好
如果实在不放心,对于瓶颈部分,我们可以用汇编去写
这比猜想哪个变量会进入寄存器,来得更直接有效
毕竟,对于C/C++这样的可移植程序,
谁知道计算机有多少个寄存器呢?
或许如8086有8个可用的,或许如S390有16个
更或许根本就是有n个CPU呢?
qufan
2003-10-25
打赏
举报
回复
多谢step_by_step(脚印)指点,我的确在学校里读书
bladesun
2003-10-25
打赏
举报
回复
你要是整天在IDE下搞来搞去,就不必花多少功夫去学他
你要是涉及到一些和OS有相关性,常见的如多线程等,还是要好好了解一下的
你要搞并行计算,恐怕要对二者都要熟的一塌才行
earthharp
2003-10-25
打赏
举报
回复
你想一辈子做苦工的话
什么都不需要学, 每天多吃点饭最好。
19830711
2003-10-25
打赏
举报
回复
程序员= 操作系统 + 数据结构 + C
langwuji
2003-10-25
打赏
举报
回复
写程序时,要站在编译器的角度去思考一些问题。
操作系统,如果你不知道操作系统给你提供了那些服务怎么写出高质量的程序?
catface
2003-10-24
打赏
举报
回复
经验是可以经过大量事例得出的 不必亲身一一经历啊
如果做事的话,是很难有时间去系统的学习这些基础知识的
而没有扎实的基础知识的话,在技术上是很难高,精,尖的
至少我的老师是这么说的
虽然工作可以得到大量实际操作的知识经验
但是有很大的重复性
我很赞同无心居士的话
redleaves
2003-10-24
打赏
举报
回复
懂与不懂在表面上差不了多少,待遇也差不多。
可是水平上就差很多了,如果一个人自称“精通”Windows开发,却又不懂操作系统,不知道有没有人相信!?
编译原理更是有用,程序员天天和编译器打交道,不知道它怎么工作怎么能行?尤其是它与操作系统关系比较紧的那些部分。
当然,不懂也不会死人,不过干起活来效果就差远了。
bbcallen
2003-10-24
打赏
举报
回复
老师没经历过
不过老师以前的学生就未可知也
liansdan
2003-10-24
打赏
举报
回复
老师说的也不知道他有没有经历过,
step_by_step
2003-10-24
打赏
举报
回复
好像这边回帖的都是没有什么实际项目经验的学生吧,
根据我的经验,操作系统原理和编译原理的学习对于一个程序员写出好的代码有很大的影响.
举个例子.
当设计业务系统的时候,有时候需要业务引擎,而业务引擎可以用自己定义的语言实现或已经存在的脚本语言实现.当时具体写代码实现的时候,至少要用到编译原理里面的词法分析的知识.
当你的程序计算涉及到多进程或者多线程的时候,自然会用到了os里面的知识.
这两门课好好学吧,要常习之.
yjxGMF3144
2003-10-24
打赏
举报
回复
同事有做嵌入式OS的,采用GNU C的写法!就其Code看来,需要对C有非常深入的了解。但是就现在的C语法书而言,即使是“The Complete Reference C”也没有深入的探讨关于编译中的“Run-Time Enviroments”(运行时环境),即一个程序运行过程中其“Active Record”(活动记录)的动态改变情况;这些东西是属于编译原理的,但是做OS的人应该有比较深入的了解!
对于编译原理,个人觉得对你的Code-Style肯定是有帮助的!现在有的Compiler做得非常的优化,但是如果你的Code写得很糟糕,它也无能为力!举一个Example:(不知是否恰当,多多海涵!)
如果你使用的Compiler不做循环展开,那么下面的(1)可能比(2)更好!
假设A[],B[],C[],D[],E[],F[],G[]是已经初始化了的数组
(1)
pA = &A[0];
pB = &B[0];
pC = &C[0];
pD = &D[0];
pE = &E[0];
pF = &F[0];
pG = &G[0];
pH = &H[0];
for ( i = 0; i < 100; i++ )
{
*pA++ = *(pB++) + *(pC++) + *(pD++) ;
}
for ( i = 0; i < 100; i++ )
{
*pE++ = *(pF++) + *(pG++) + *(pH++);
}
(2)
pA = &A[0];
pB = &B[0];
pC = &C[0];
pD = &D[0];
pE = &E[0];
pF = &F[0];
pG = &G[0];
pH = &H[0];
for ( i = 0; i < 100; i++ )
{
*pA++ = *(pB++) + *(pC++) + *(pD++) ;
*pE++ = *(pF++) + *(pG++) + *(pH++);
}
如上面的那种100次的循环,如果我们把所有的变量都放在寄存器,那么运行速度肯定快!但是机器中的寄存器是有限的,如果在次程序中仅仅只3个寄存器可以使用,那么按照(2)的做法,Compiler生成的汇编代码肯定需要把一些结果中间结果Store到memory中,然后在第二次时循环时在从Memory中Load(Memory Store和Memory Load很占用时间),这样就加重了装入和存储时间。但是如果我们采用(1)的方式,时间就节约了,因为寄存器足够!
King_Dragon
2003-10-24
打赏
举报
回复
学难用易,只要是从事PC编程,无可避免的要涉及OS和编译原理(从广义上说)。如果这些方面基础薄弱,提升的空间就小,有些环节主要靠经验来完成,只能说知其然而不知其所以然。可能在不同的阶段会有不同的想法,但先专后广是没错的,OS和数据结构非常重要。
ywasp
2003-10-24
打赏
举报
回复
很有用,等你学深入就知道
iori2000
2003-10-24
打赏
举报
回复
如果能够详细看看c语言你也许会知道算法,看看pascal吧,基础语言对编码的要求和流程,写一写流程画画流程图,就象你做菜一样,你必须知道什么在前,什么在后。你要知道一个工作要分成多少个步骤去完成,每个步骤又有多少个细分。自顶向下逐步细化下去,最后每个模块只有一个功能。
iori2000
2003-10-24
打赏
举报
回复
不在一个比较范围之内,操作系统是让我们认识系统的工作流程,cpu对内存中进程的调用原理和cpu系统资源的分配,死锁的造成和如何去避免。而编译原理是开发语言的思想,我编译原理学习的不好,不过他们不在一个范围之内,一个是系统的理论,一个是语言的思想。如果有人硬把两者放在一起比较的话就好比“关公战秦琼”。这是小弟的拙见,四年下来虽然知道里面讲的是什么东西!只是学到一点皮毛,如果你想成为另一种语言X的开发者,那么你不要放过编译原理。
迎风飞翔
2003-10-24
打赏
举报
回复
我想操作系统应该是必要的吧,他可以对编程有指导作用,最起码大多数程序调用的功能都是操作系统提供的.
加载更多回复(44)
内核的配置和
编译原理
-uboot和系统移植第15部分
本课程为linux kernel移植的第2部分,主要内容是内核的配置和编译过程实践、配置和
编译原理
解析,其中重点是menuconfig的实现和Kconfig、.config文件的关系。
编译原理
生成语法树c语言,
编译原理
编译原理
(计算机专业课程)编辑锁定
讨论
上传视频
编译原理
是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。
编译原理
是计算机专业设置的一门重要的专业课程。
编译原理
课程是计算机相关专业学生的必修课程和高等学校培养计算机专业人才的基础及核心课程,同时也是计算机专业课程中最难及最挑战...
编译原理
的学习心得和知识总结(一)|初识
编译原理
目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《
编译原理
》第三版 清华大学出版社 1、本文内容全部来源于开源社区 GitHub和以上博主的贡献,本文也免费开源(可能会存在问题,评论区等待大佬们的指正) 2、本文目的:开源共享 抛砖引玉 一起学习 3、本文不提供任何资源 不存在任何交易 与任何组织和机构无关 4、大家可以根据需要自行 复制粘贴以及作为其他个人用途,但是不允许转载 不允许商用 (写作不易,还请见谅 ????)
编译原理
第一章 引论文章快速说
编译程序与
操作系统
的关系
和很多
程序员
一样,编译器到目前为止对我还存在一些让我迷惑的地方。比如编译器与
操作系统
的关系,编译器与CPU的关系,动态链接器从哪查找共享库等。让人困惑的原因有几,第一是编译器的功能角色特殊,编译器是生成程序的程序;第二是编译过程变得越来越复杂[注],一支编译器支持多种程序语言、支持共享库、编译优化,编译与链接可分开等;第三,
操作系统
的介入。本文试着从第三点——
操作系统
介入编译过程后对编译器的影响,看看
操作系统
与编译器有什么关系。
注:编译过程变复杂源于计算机应用变复杂。例如应用程序
计算机原理学习(4)--
操作系统
发展和程序编译
前言 前面的文章主要都是计算机硬件相关的一些工作原理。而前一篇文章介绍了内存的工作原理,编址方式,逐步过渡到软件上面来了。前面也说过,内存是
一个
非常重要的部件,因为CPU所需的指令和数据都在内存中。所以从这一篇开始我们主要看看程序运行时在内存中的布局。 我们知道对于计算机系统来说,最底层的是硬件,硬件之上是
操作系统
,而我们的程序都是基于
操作系统
来运行的,而不是基于硬件,这样
操作系统
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章