学习C ++作为Perl程序员

时间:2010-03-31 16:04:13

标签: c++ perl

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

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

@array = (1,"string",5.355);

您可以为标量变量指定任何值:

$var = 1;
$var = "string";
$var = \$reference_to_scalar;

有很多例子。

我的一位朋友向我推荐了Bruce Eckel撰写的“Thinking of C ++”一书,但我没有任何C背景,而且我很难理解一些事情。

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

我不需要傻瓜手册(intbooldoubleifwhile),我只需要一个方向如何从Perl程序员的角度学习C ++,因为我确信有很多像我这样的人。

提前谢谢。

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

10 个答案:

答案 0 :(得分:10)

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

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

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

答案 1 :(得分:10)

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

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

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

答案 2 :(得分:6)

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

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

答案 3 :(得分:6)

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

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

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

答案 4 :(得分:3)

我在C ++中的第二个思考。我在了解perl之后阅读了它,我发现它非常好。第二版不承担C知识;这是前言中的先决条件所说的内容:

  

在本书的第一版中,我   决定假设别人   曾教过你C和你有   至少阅读水平的舒适度   它。我主要关注的是   简化我发现的困难:   C ++语言。在这个版本我   增加了一章快速   C的介绍,以及   在C研讨会上思考,但我是   仍假设你已经拥有   某种编程经验。   另外,就像你学到很多东西一样   通过观察它们来直观地看待新单词   在小说的背景下,它是可能的   从中学到很多关于C的知识   在其中使用它的上下文   本书的其余部分。

正如danben所说,你几乎只需要“忘记你对perl的了解”。知道perl是有用的,因为它是另一种编程语言(类似C语言,甚至是),但它远不足以仅仅“学习差异”。

另外:思考在C ++中,电子版是免费的。

答案 5 :(得分:3)

我专门为我的日常工作与Perl合作,并在晚上和周末为C ++编程。他们需要完全不同的心态。作为一个noob程序员,你最好接近C ++并从'Hello World'开始学习它。当然,你可以快速跟踪一般概念这样的数据类型,但仍然需要足够的注意力从你的指针中知道你的短路和你的指针。

我会避免首先学习C,除非你真的需要知道C. C中的字符处理是一种痛苦,不适合我怀疑你想做的事情。 C ++中的String类是你的朋友:学习它,活着喜欢它!

答案 6 :(得分:0)

我的大学向我们推荐了这本书:http://www.lrde.epita.fr/~akim/ccmp/assignments.html#C_002b_002b-Primer

无论如何,C ++思考可以在网上免费获得。你可以在我给你的上一个链接上找到链接。

祝你好运:)

答案 7 :(得分:0)

Here您可以找到各种各样的免费下载/在线图书。

答案 8 :(得分:0)

实际上,既然你已经掌握了一种命令式语言,那么学习C语言根本不会花费你太多时间。基本知识都是一样的 - if语句,while循环,for循环等。甚至命名空间的组织方式也是相似的(尽管当然不同之处。)你可能希望掩盖一些指针处理,如C ++确实引用了一些不同的内容,但是通过阅读和阅读K&R (the official C reference)的副本至少一次,你不会对自己造成任何伤害。 (无论如何,每个体面的程序员都应该在他的书架上复制一份。)

之后,请选择最新版本的Stroustrup,并确保您完成练习。对于面向Perl的人来说,有些概念可能有些陌生,但它不会奇怪。如果你遇到一个特别的概念,你会觉得很棘手,再次发布在SO上,很多人会乐意和你一起讨论它!

K&R http://upload.wikimedia.org/wikipedia/en/e/e1/Kr_c_prog_lang.jpg Stroustrup http://www.research.att.com/~bs/3rd_front.jpg

答案 9 :(得分:0)

Stroustrup的书在学习语言时有点难,最好还是尝试另一本书并使用Stroustrup书作为参考。