4

我学习的第一门语言是 PHP,但我最近学习了 Python。由于这些都是“高级”语言,我发现它们有点难以掌握。我也尝试学习Objective-C,但我放弃了。

那么,我应该学习什么语言在 Python 和 C 之间架起桥梁

4

14 回答 14

15

目前尚不清楚为什么需要一种桥接语言。为什么不直接开始使用 C 呢?C 本身就是一门非常简单的语言。我认为 C 学习者最难的部分是指针以及与内存管理相关的所有其他内容。此外,C 语言面向结构化编程,因此您需要学习如何在没有 OOP 优点的情况下实现数据结构和算法。实际上,您的问题很难,通常人们从低级语言到高级语言,我可以理解那些朝着其他方向发展的人的沮丧。

于 2008-09-08T05:34:02.920 回答
7

开始学习 C 的最佳地点是 Kernighan 和 Ritchie 的《The C Programming Language》一书。

你会从 PHP 中认识到很多东西,你会惊讶于 PHP(以及 Perl、Python 等)为你做了多少。

哦,你还需要一个 C 编译器,但我想你知道这一点。

于 2008-09-08T06:13:37.040 回答
5

我通常同意其他大多数人的观点 - 没有真正好的垫脚石语言。

然而,了解学习 C 的难点是有用的,这可能有助于您了解是什么让您感到困难。

我想说的是,对于来自 PHP 的人来说,在 C 语言中会被证明是困难的事情是:

  • 指针和内存管理
    这几乎就是你学习 CI 想象的原因,所以实际上没有任何绕过它的方法。学习较低级别的汇编类型语言可能会使这更容易,但 C 可能是做到这一点的桥梁,而不是相反。
  • 缺乏内置的数据结构
    PHP 和 co 都具有原生 String 类型,以及内置的哈希表等有用的东西,这在 C 中不是这种情况。在 C 中,String 只是一个字符数组,这意味着你需要做更多的工作,或者认真查看添加了您习惯的功能的库。
  • 缺乏内置库
    现在像 PHP 这样的语言几乎总是带有大量的库,用于数据库连接、图像处理和其他东西的堆栈。在 C 语言中,除了一个主要围绕文件读取、写入和基本字符串操作的非常薄的标准库之外,情况并非如此。几乎总是有很好的选择可以满足这些需求,但您需要自己将它们包括在内。
  • 对高级任务​​的适用性
    如果您尝试在 C 中实现与在 PHP 中相同类型的应用程序,您会发现它执行起来非常缓慢。例如,生成网页并不是纯 C 语言真正适合的事情,所以如果您尝试这样做,您会发现它非常缓慢。
  • 预处理器和编译
    现在的大多数语言都没有预处理器,如果您来自 PHP,编译周期似乎很痛苦。这两者在某种程度上都是性能权衡 - 脚本语言在开发人员效率方面进行权衡,而 C 更喜欢性能。

我敢肯定,我现在还没有想到更多。这个故事的寓意是,试图理解你在 C 中发现的困难可能会帮助你继续前进。如果您尝试使用它生成网页,请尝试执行较低级别的操作。如果您缺少哈希表,请尝试编写自己的哈希表,或查找库。如果您正在为指针而苦苦挣扎,请坚持下去:)

于 2008-09-08T07:49:49.553 回答
1

学习任何语言都需要时间,我总是确保我有一个可衡量的目标;我给自己设定了一个目标,然后开始学习语言来实现这个目标,而不是试图学习语言和语法的每一个角落。

C 并不容易,如果你不是汇编程序的根,指针可能很难理解。我首先学习了 C++,然后将 C 重新融入我的曲目,但我从 x86 和 68000 汇编程序开始。

于 2008-09-08T06:25:06.480 回答
1

Python 与您将要获得的 C 非常接近。事实上,它在很多地方都是围绕 C 的一个非常薄的包装器。但是,C 确实需要您对计算机在低级别上的工作方式有更多的了解。因此,您可能会从尝试汇编语言中受益。

LC-3是一种带有模拟机器的简单汇编语言。

或者,您可以尝试使用像CINT这样的交互式 C 解释器。

最后,坚持下去并阅读 K&R 的书通常是最好的方法。

于 2008-09-08T06:42:09.483 回答
1

忘记Java吧——它不会让你更接近C(你已经证明你学习新语法没有问题)。

要么阅读 K&R,要么再往下读:了解机器本身。C 中唯一棘手的部分是指针和内存管理(它与指针密切相关,但也与函数的调用方式有关)。学习一种(简单的,甚至可能是“假”汇编)语言应该可以帮助你。

然后,开始阅读 C 提供的标准库。它将成为您的日常面包和黄油。

哦:另一个提示!如果你真的桥接,试试FORTH。它帮助我进入指针。此外,使用 Visual Basic 6.0 中的 win32 api 可以教你一些关于指针的知识;)

于 2008-09-08T06:48:42.710 回答
1

C 是连接自身的桥梁。

K&R 是唯一一本您可以一口气读完并且几乎再也不会拿起它的编程语言书籍...

于 2008-09-08T06:51:54.187 回答
1

我的建议是买一本与你想做的事情相关的好 C 书。我同意 K&R 被认为是 C 方面的“书籍”,但我发现 Kay A. Robbins 和 Steven Robbins 的“UNIX 系统编程”更实用,更实用。这本书充满了简洁的代码片段,您可以在几分钟内输入、编译和尝试。

在http://books.google.com/books?id=tdsZHyH9bQEC&printsec=frontcover有一个预览(超链接不起作用。)

于 2008-09-08T06:52:06.230 回答
0

我感受到你的痛苦,我也先学习了PHP,我正在努力学习C++,这并不容易,我真的很挣扎,自从我开始学习C++已经2年了,我能做的程度仍然是cout、cin 和数学。

如果有人读到这篇文章并想知道从哪里开始,请从低处开始。

于 2008-09-08T05:48:36.567 回答
0

不管你信不信,Java 在这里实际上可能是一个不错的选择。它强烈基于 C/C++,所以如果你能掌握语法和强类型,学习 C 可能会更容易。好处是您可以学习较低级别的语法,而无需学习指针(因为就像在 Python 和 PHP 中一样为您管理内存)。但是,您将学习类似的概念……参考(或一般的对象)。

此外,它是强大的面向对象的,所以如果你还没有处理过 OOP,可能很难理解这一点......你可能最好像其他人建议的那样使用 C 进行挖掘,但它是一个选项.

于 2008-09-08T06:36:42.007 回答
0

我认为 C++ 是通向 C 的一个很好的“桥梁”。我首先在大学学习了 C++,因为它基于 C,所以你会学到很多相同的概念——也许最值得注意的是指针——还有面向对象的设计。OO可以应用于各种现代语言,值得学习。

在学习了 C++ 之后,我发现根据需要(例如,在不支持 C++ 的设备上工作时)找出 C++ 和 C 之间的差异并不难。

于 2008-09-08T06:52:34.167 回答
0

尝试学习一门您熟悉的语言,尝试不同的方法和基础知识。

于 2008-09-08T08:11:16.397 回答
0

语言很容易学习(尤其是像 C 这样的语言)......困难的部分是学习语言的库和/或编码风格。例如,我对 C++ 相当了解,但我看到的大多数 C/C++ 代码让我感到困惑,因为命名约定与我每天使用的命名约定大不相同。

无论如何,我想我想说的是不要太担心语法,专注于所说的语言库。这不是特定于 C 的,您可以对 c#、vb.net、java 以及几乎所有其他语言说同样的话。

于 2008-09-08T11:29:14.423 回答
0

帕斯卡!语法足够接近,仍然需要你做一些内存管理,但对初学者来说并不那么粗糙。

于 2008-09-08T21:00:10.933 回答