我一直在进行编译器创建.我发现了一些非常棒的初学者和高级东西,但中间什么都没有.我为玩具语言创建了3个不同的简单概念验证编译器,但我想让自己暴露在真实的东西之中.
语法方面最直接的真实语言似乎是C.因为我现在最熟悉的语言是C#,我很乐意研究用C#编写的真正的非教程C编译器的源代码.是否存在(包含可用的源代码)?
理想情况下,我喜欢C编译器,而不是.NET或C#编译器,但使用C#编写的源代码.
我知道C# - > C感觉有点倒退,但是在我改变它之前,它允许我从熟悉的语言开始更深入地进入编译器.
虽然我不是在寻找C#/ .NET编译器,但有些人会看到这个问题的人正在寻找:
我正在尝试学习C.作为C#开发人员,我的IDE是Visual Studio.我听说这是一个很好的C/C++开发环境.然而,似乎无论我尝试做什么小事,直觉都让我失望.有人可以为如何:
编辑:另请参阅:https://stackoverflow.com/questions/951516/a-good-c-ide
在我看来,程序员(尤其是Comp.Sci.grads)试图解决的最常见的过于雄心勃勃的项目是构建自己的操作系统.(尝试创建自己的编程语言+编译器可能更常见,但不是那么雄心勃勃.)
对于那些(像我一样)愚蠢的尝试:除了庞大的规模,你在尝试从头开始创建自己的操作系统时遇到的最大问题或意想不到的障碍是什么?
编辑:一个很棒的操作系统问题:在操作系统开发中有哪些资源?
我一直在编程... 6-> 8年,我已经开始意识到当我做类似的事情时,我真的不知道在低水平的事情发生了什么.
int i = j%348
Run Code Online (Sandbox Code Playgroud)
问题是,我知道j%348做了什么,它将j除以348并找到余数.我不知道的是计算机如何做到这一点.
同样,我知道
try
{
blah();
}catch(Exception e){
blah2();
}
Run Code Online (Sandbox Code Playgroud)
将调用blah,如果blah抛出,它将调用blah2...但是,我不知道计算机如何执行此操作而不是错误...崩溃或结束执行.
我认为为了让我在编程方面"更好",我应该知道我的代码到底在做什么.[这可能也会帮助我优化和...错误...不做蠢事]
我认为我所要求的可能是在大学或其他什么地方教授的东西,但说实话,如果我能学到一点,我会很高兴.
问题的关键是:
我要问的主题/计算机科学课程是什么? 因为老实说,我不知道.
由于我不知道这个主题叫什么,我实际上找不到书或在线资源来了解这个主题,所以我有点卡住了.如果有人帮助我,我会永远感激= /
以下问题日益普遍:
注意:图像路径都在代码和数据库中,因此要获取所有已使用图像的完整列表并不容易.
我希望在部署之前为每个人编写一个小的C#程序.我想找出项目目录中的哪些文件(或其中一个subir.s递归)尚未添加到subversion中.理想情况下,我还想排除积极添加到忽略列表中的项目.
我们正在使用TortoiseSVN与Windows主机和客户端.
如何以编程方式发现未添加的文件?
到目前为止,我能找到的最接近的是这个说法,svn status | grep -e ^?但这看起来像Unix命令.
我知道C++有对象的概念,但C没有.我也知道,几乎所有人都知道C适合K&R,但C++库要复杂得多.但是必须有其他重大差异.
C和C++之间的主要区别是什么?
至于最佳实践,使用之间是否存在有意义的差异:
Double d;
Run Code Online (Sandbox Code Playgroud)
和
double d;
Run Code Online (Sandbox Code Playgroud)
我知道最佳实践充满了矛盾,所以我知道答案可能会有所不同.我只是想知道两者之间的实用差异.
我想用Common Lisp或其他Lisp方言开发一个图形应用程序,可以部署在Mac,Windows和Linux中,作为提高我对这种语言知识的一种方式.理想的情况是:
我想制作一个小游戏或图形应用程序,并能够通过在具有任何这些操作系统的计算机中进行简单安装来显示它.
有人有类似情况的经验,或者可以指出我对图形库和编译器,运行时环境等的最佳选择......
谢谢!
Google的新语言"Go" 在其网站上说:
该语言设计为易于分析,无需符号表即可解析
我当然不是这些问题的专家,但我认为符号表是使用变量的语言的所有编译器共同的基本结构,Go显然使用变量.我不明白的是什么?
我注意到今天一些同事的代码在初始化中初始化了类变量.然而,由于它们所处的顺序,它引起了警告.我的问题是为什么最好在当前位置进行变量初始化而不是在大括号内?
DiagramScene::DiagramScene( int slideNo, QRectF screenRect, MainWindow* parent )
: QGraphicsScene( screenRect, parent ),
myParent( parent ),
slideUndoImageCurrentIndex(-1),
nextGroupID(0),
m_undoInProgress(false),
m_deleteItemOnNextUndo(0)
line(0),
path(0)
{
/* Setup default brush for background */
scDetail->bgBrush.setStyle(Qt::SolidPattern);
scDetail->bgBrush.setColor(Qt::white);
setBackgroundBrush(scDetail->bgBrush);
}
Run Code Online (Sandbox Code Playgroud) c ×3
c++ ×3
.net ×1
c# ×1
class ×1
coding-style ×1
common-lisp ×1
deployment ×1
go ×1
graphics ×1
ide ×1
lisp ×1
osdev ×1
svn ×1
tortoisesvn ×1