我对C++比较陌生。我经历了所有基本的东西,并设法为我的编程语言构建2-3个简单的解释器。
,给了仍然让我头疼的第一件事:实现我的C语言++
认为的类型系统:红宝石,Python和PHP和公司有很多内置显然在C中实现的类型。 所以我第一次尝试的是使我的语言有三种可能的类型:Int,String和Nil。
我想出了这一点:
enum ValueType
{
Int, String, Nil
};
class Value
{
public:
ValueType type;
int intVal;
string stringVal;
};
呀,哇,我知道了。由于必须始终调用字符串分配器,因此传递这个类的速度非常缓慢。
下一次,我已经试过类似这样:
enum ValueType
{
Int, String, Nil
};
extern string stringTable[255];
class Value
{
public:
ValueType type;
int index;
};
我会存储所有字符串stringTable
,写自己的位置index
。如果Value
的类型是Int
,我只是在index
中存储了整数,那么使用int索引访问另一个int是没有意义的,或者?
反正上面也让我头痛。过了一段时间,从这里访问表格中的字符串,引用它并在那里复制它越来越多 - 我失去了控制。我不得不把翻译稿放下。
现在:好的,所以C和C++是静态类型的。
如何上述语言的主要实现方式处理不同类型的在其方案(fixnums,大数,NUMS,字符串,数组,资源,...)?
我该怎么做才能获得多种不同类型的最大速度?
这些解决方案与我上面的简化版本相比如何?
“内部,字符串,无”,约浮什么? – hhafez 2010-04-23 08:39:21
我完全支持不带'float'的编程语言!否则,关于SO的第一个sub_Language问题将是“嘿,为什么在sub_Language中不会有0.1 + 0.2 == 0.3?它坏了!“。 – bobince 2010-04-23 09:08:37
@sub:如果你是一个压倒一些答案的人,你应该重新考虑它。有没有理由低估了有效答案,其中一些答案可能是你完全不了解答案。如果不是你,那么做谁:请解释你认为错误的答案。这是实际改进系统的唯一方法。 – 2010-04-23 10:55:28