学习C++作为Perl程序员

men*_*dor 16 c++ perl

我是一名Perl5程序员已有7年了,现在我正在努力学习C++.一些C++语法很难让我理解并以C++方式思考.

例如:在Perl中,您可以混合数组中的数据

@array = (1,"string",5.355);
Run Code Online (Sandbox Code Playgroud)

您可以将任何值分配给标量变量:

$var = 1;
$var = "string";
$var = \$reference_to_scalar;
Run Code Online (Sandbox Code Playgroud)

有很多例子.

我的一个朋友向我推荐了Bruce Eckel的"Thinking of C++"一书,但我没有任何C背景,而且我很难理解一些事情.

所以我的问题是 - 你能不能就这种情况向我推荐一本书.我不想学习C.我理解OOP(我越来越熟悉C++ oop),我理解指针(和一些算术)和引用(在Perl中广泛使用)的要点.

我不需要傻瓜手册(是什么int,bool,double,if,while),我只是需要一个方向如何学习C++从Perl程序员的角度来看,因为我敢肯定,有很多像我一样.

先感谢您.

编辑:感谢所有推荐的书籍和答案,我将尝试使用"Accelerated C++".我将从头开始尝试将我的思维流程改为C++.我添加了"初学者"标签.

dan*_*ben 11

"用于Perl程序员的C++"是一个非常具体的请求.鉴于Perl比C++抽象了更多的机器,我认为开始的一个好方法是忘记你对Perl的了解并获得一本常规的C++书.

例如,您应该被允许在数组中拥有多个数据类型似乎是合理的,因为Perl数组是一个更高级别的构造,而不仅仅是内存中的一系列连续单词.如果我要从C++中的数组转到Perl中的数组,我会说Perl数组就像一个C++数组,它保存指向数据而不是数据的指针(如果这是真的 - 我不是Perl程序员所以它可能不是.也许Perl数组更像是一个链表数据结构.无论如何,你都明白了.)向后看,IMO,并不完全相同.

至于我推荐的那本书 - 有很多好书,所以这取决于你所寻找的风格和深度.我认为Accelerated C++非常适合提升 - 它的全面性和覆盖了很多方面,而不会淹没你繁琐的细节.


Edw*_*nge 11

除非你想知道C,否则不要费心学习C.用C++编程就像在C语言中编程一样.我意识到大多数书籍和老师都不这么认为,但他们错了.您应该寻找例外,例如前面提到的"Accelerated C++".

您将找不到任何可以帮助您编写代码的书籍,就像您刚刚展示的代码一样.Perl是一种非常弱的类型语言,C++恰恰相反:强类型语言.但是,有一些方法可以在各种提升结构(如变体和元组)中显示您在帖子中显示的内容.

我建议尽管在进入那种事情之前将C++学习为完全独立的语言.不要将C++学习为Perl程序员,将其作为一个完整的新手学习.您可能对前几章感到厌倦,但最终您将更好地掌握C++独有的风格和功能与Perl独有的风格和功能.我没有看到任何"Xlanguage for Ylanguage"一书,它会让你到达那里.


Mic*_*fik 7

我经历了相反的过程.我学到的第一件事是,虽然你可以编写看起来像C或C++的Perl代码,但你不应该这样做.同样适合你.您可以找到一种编写Perl-ish C++代码的方法,但不要打扰.语言太不同了.您需要学习如何将C++代码编写为C++程序员.已经提出了几本商品书籍.我认为你应该通过寻找导师来增强这一点.如果您正确或错误地做事,您将立即获得反馈.您还可以查看C++ FAQ Lite,特别是有关新C++程序员问题的第28和29章.

最大的区别是C++是强类型的.每个变量都有一个类型,它不会改变.您的示例Perl代码在C++中在技术上是可行的,但它需要一个额外的库,我不确定您还准备好了.相反,C++方式是将混合但相关的项目集合视为自己的新类型 - a structclass.

另一个很好的选择是在SO上发布特定的C++问题.我们鼓励初学者级别的问题,只要他们措辞明确并且先前付出了努力.


aaa*_*bbb 6

我试图从"Thinking in C++"一书中学习C++.我发现它非常非常难以学习.

对于以C++开头的人而言,一本更好的书是由Andrew Koenig和Barbara E. Moo撰写的"加速C++:实例编程实例"