4

这个问题是针对经验丰富的程序员的。在学习一门新的语言时,您是否有一套遵循的流程?

我希望我有一个可以遵循的有效方法或待办事项清单,以使学习过程更加简化。

你喜欢独自学习还是和朋友一起学习?有什么地方可以轻松获得新语言的语法吗?您是否制作了一种特定类型的备忘单,您可以在其中快速写下控制结构和重要的关键字?

你有什么特别的东西要记住吗?

你确定要学习什么样的图书馆?你怎么知道你已经学到了一些东西,在什么时候你觉得你好像知道这门语言?

每当我学习一门新语言时,我大部分时间都在翻阅书籍,其中一半是为初学者准备的,而从不为有经验的开发人员准备的。

4

13 回答 13

8

就我个人而言,我发现我需要一个实质性的项目来用一种新的有趣的语言来实现。您可以阅读一本书以熟悉语法,并接触到有趣的功能,但没有什么能让您像项目一样用新语言思考。

于 2009-06-20T00:05:30.970 回答
4

我不打算仅仅学习一门新语言。我找到了一个需要(或非常适合)新语言的项目并开始编码。

资源取决于语言,但无论是在线教程还是一本好的“学习语言”书都非常有帮助。我不会试图记住任何东西,只是保持文档关闭并搜索我需要编写的每段代码的解决方案。算法在语言之间变化不大,所以大多数时候只是查找我需要的特定结构的语法。

另外,我可能永远不会知道关于语言的一切。我只是不断地查阅有关我需要的东西的文档,最终我不再需要查找大多数东西了。然而,即使是多年来我每天都在使用的语言,有时我仍然需要查找一些东西,因为我以前从未使用过它们。

于 2009-06-20T00:09:21.600 回答
3

这是我通常做的:

  • 阅读以熟悉新的语言语法
  • 查找我感兴趣的现有开源项目
  • 将其移植到新语言
  • 根据需要重复
于 2009-06-20T00:28:36.303 回答
2

我通常从一些基本程序开始。通常是我正在阅读的书中的样本,然后稍微修改它们以使其更复杂并修整粗糙的边缘。

之后,我前往Project Euler并开始解决问题。这是熟悉新语言和基本结构的好方法。

于 2009-06-20T00:24:14.143 回答
2

这是一个疯狂的冲刺。

首先,我必须确保我知道如何以“旧”方式做事,这意味着我习惯于使用其他语言的方式。

但是我不想陷入(例如)像编写 C 代码一样编写 Python 代码的陷阱,所以我阅读了新语言为我提供的所有更熟悉的语言所没有的东西。

于 2009-06-20T00:24:23.693 回答
1

我阅读了一本很好的手册,并将其与我已经知道的语言进行了比较。所以我只是了解它们之间的差异。

于 2009-06-20T00:02:54.983 回答
1

学习一门新语言的一种非常流行的方法是为自己创建一个简单的项目并用新的目标语言实现它。

于 2009-06-20T00:07:01.277 回答
1

我会创建一些我以前已经做过的东西,这样我就可以专注于语言本身,而不是项目的设计或主题。
我还会花一些时间寻找(这个地方是一个很好的开端;-)并阅读一本关于该语言的好书。

剩下的就是练习练习练习(就像外面的一切一样,不是这样)。

于 2009-06-20T00:07:32.930 回答
1

我会阅读一些关于语言大概念的常见问题解答/书籍。

然后我会尝试在我已经知道的语言之间进行比较,以避免在语言 X 中应用语言 Y 中使用的概念。每种语言作为完成工作的方式,即使它们看起来相似,也不应该混合它们乍一看。

这将是第一步。

在更长的基础上,我会关注论坛或 SO 上专门讨论这种语言的部分。这些天我会阅读许多线程的答案,以便掌握高级概念、技巧和最常用的库。这也有助于我注意到我何时开始流利地使用该语言:当您开始能够用特定语言回答许多随机问题时,这意味着您已经非常擅长它了。

于 2009-06-20T00:09:56.200 回答
1

编程的基础只需要很少的结构——一个好的程序员将能够编写出色的代码,只需要可用语言功能的一小部分。

一本书通常是学习一门新语言的基础知识并获得概述的好方法,这样您就知道该语言的哪些领域可以在您以后需要它们时为您提供帮助,但是最好的方法是编写程序来做这些事情你需要做的,并在你去的时候学习你需要知道的东西。

这样做的好处是,当你想做新的事情时,你知道去哪里找,而且你做得很好,但你不会费心去学习大量你永远不会真正使用的垃圾。

于 2009-06-20T00:19:15.217 回答
1

我假设您学习了一种新的支持 OOP 的高级编程语言。此类语言的示例包括:Java、Typescript、Perl、C#、C++ 等。您也是一位经验丰富的程序员,因此您已经了解其他一些面向对象的语言。

我希望我有一个可以遵循的有效方法或待办事项清单,以使学习过程更加简化。

您应该创建一个涵盖以下主题的项目。

句法

  • 评论
  • 命名空间
  • 陈述
    • if else
    • 循环
    • switch case
  • 函数和类
  • include// import_use

特定类:

  • 静止的
  • 常量/最终
  • 覆盖方法
  • 创建接口并实现
  • 继承
  • 嵌套类

数据结构

  • 大批
  • 收藏:
    • 列表
    • 地图、队列、堆栈
    • 对它们的操作:
      • 删除
      • 插入
      • 搜索
      • 迭代
  • 字符串

您可以通过多种方式操作字符串:

  • 代替
  • 匹配
  • 加入
  • 分裂

运营商

赋值运算符=有时很棘手。您必须检查它是创建浅拷贝还是深拷贝。

效果如何==?也许有另一种选择obj.equals(other)

串联:s1 . s2s1 + s2

你能重载运算符吗?

编程技巧

  • 异常处理
  • 拉姆达斯
  • 与用户交互 ( read, write)
  • 单元测试

什么是简单类型,如int, bool, char?它们是不变的吗?如果这是弱类型语言,标量、数组和哈希表之间可能存在差异。

职能。

参数是值传递还是引用传递?

各种各样的

  • 正则表达式
  • 线程
  • 数据格式:
    • JSON
    • XML
  • 文件和流
  • HTTP 方法
  • 日期和时间

    您应该熟悉流行的库Math,如algorithm.

于 2017-07-16T08:10:31.280 回答
0

我通常安装运行时。然后我从编译器或解释器的命令行运行一些常用命令。我在网上寻找论坛以了解其他人对此的看法。然后我研究如何在 java 中使用外部参数,例如 psvm(String[] args)。我想总结一下,由于我在 solaris 中的系统管理员背景,我总是对命令行上的语言功能感兴趣。

于 2009-06-20T00:49:46.887 回答
0

如果您没有机会加入一个项目并学习它并从头开始应用它。您可以从开放的在线课程中获得帮助。例如,“Edx.org”就是一个很棒的平台。有很多关于计算机科学和软件开发的课程。即 这里是数据结构和软件设计的课程。

于 2017-07-16T08:36:29.710 回答