亲爱的年轻的自己,以下是实现目标的四个技巧

2 位读者喜欢这篇文章。
teacher learner

Opensource.com

亲爱的年轻的我,

我从 10 年后的未来给你写信。

在未来的十年里,你会发现你热爱计算机,但是基于你所热爱的事物开始职业生涯会存在障碍。你会被来自在线出版物、电子书和承诺教你 X 语言和 Y 框架的教程的信息过载所困扰,并因缺乏方向而动摇。所以,这里有一些来自你未来自己的建议。

每天进行低级编程练习。它们是你的面包和黄油,坚持下去。

一旦你掌握了低级编程任务,你就离你的目标近了 25%。一本厚厚的 C 编程教科书和大量的练习就足够了。而且因为我很了解你,呵呵,我知道你有一本这样的书。但是这本书很难在网上找到,而且你可能把它忘在你母亲家了,所以这里有另一本书:《C 程序设计语言》第二版。别担心,它是在 1988 年发布的。

学习软技能。但不要忽视你每天的低级编程练习!

软技能是人际交往能力。沟通、协作和相处融洽以完成出色的工作。它们与低级编程同等重要,甚至更重要,而学习它们的最佳方法是与他人互动。对你来说,Twitter 仅有 2 周的历史,但相信我,它仍然存在,并且是让你在网上与他人联系的好方法。你的个人品牌是现在要考虑的另一件事,你与他人的互动将成为其中的一部分。

不要忘记做你的编程练习!尝试学习 HTML 和 CSS 来制作你自己的网站。

使用可定制的 IDE(集成开发环境)。

你编程的最佳方式是使用 Emacs 文本编辑器。今天,Emacs 有了一个带有酷炫视频的新 Emacs 网站,但你还无法访问它。所以,从 Emacs 窗口中使用热键组合 Ctrl+H+T 来调出教程。而你使用 Emacs 的最佳方式是在 Linux 终端中。

作为一个仅使用 Windows 的用户,你现在还不知道,但你会非常喜欢 Linux。它是免费且易于访问的。Linux 终端模拟器是你进行低级编程练习的最佳选择,如果你想运行性能测试,你可以安装 Linux 发行版并双启动你的 PC。

这些天我使用 MacBook,因为它是唯一允许我模拟所有其他操作系统的操作系统,并且它有一个支持类 Linux 命令的原生终端应用程序。

使用开源软件。

如果不强调开源软件的重要性,我今天给你的信息就不完整。你看,你最终会进入 Holberton 学校,在那里你和你的同学们主要使用开源工具和技术。你的学习以这种方式最大化,因为你成为一个更大事物的一部分,并与他人协作。

努力学习词汇(这可能是不同的且令人困惑的),并找到一种方法来接触整个技术栈。学习更高级的语言,如 Python、Ruby、Node.js 和 PHP;以及更低级的语言,主要是 C 和少量汇编语言。

技术栈的另一个突出部分是系统管理和 DevOps 的世界。如果你能掌握用 Bash、Python 和 Ruby 编写脚本的艺术,并思考未来的潜在问题,那么你已经在像站点可靠性工程师或基础设施开发人员一样思考了。这是你的目标。

User profile image.
Holberton 学校全栈工程师

9 条评论

嗨,

我认为在以“一旦你掌握了低级编程任务...”开头的行中,你缺少了“like theses examples”的链接。

是的。我也希望看到添加这个。

回复 作者:约翰·博伊德 (未验证)

嗨,约翰,克林特,

我本来要在那里包含几个例子,但我错过了。我脑海中的例子类型如下:

1) 仅使用提供的 print_char 函数,以小写形式打印整个字母表。

```
#include

int print_char(char c)
{
return (write(1, &c, 1));
}
```
结果
daniel@ubuntu:~/low_level_programming$ gcc -Wall -Wextra -Werror -pedantic 1-main.c 1-print_alphabet.c print_char.c
daniel@ubuntu:~/low_level_programming$ ./a.out
abcdefghijklmnopqrstuvwxyzdaniel@ubuntu:~/low_level_programming/$

2) 仅使用提供的 print_char 函数,打印传递给它的 `int` 类型的数字。你必须处理有符号 int 类型的所有值。

结果
(例如,如果你将数字 1024 传递给你的函数)

daniel@ubuntu:~/low_level_programming$ gcc -Wall -Wextra -Werror -pedantic 2-print_number.c 2-main.c print_char.c
daniel@ubuntu:~/low_level_programming$ ./a.out | cat -e
1024daniel@ubuntu:~/low_level_programming$

(对于这些示例,你应该将你的 main 函数放在相应的 N-main.c 文件中,并调用位于 N-name.c 文件中的函数)

请注意,从示例 1 到示例 2,难度级别大幅上升。例如,对于示例 2,请先考虑你的策略,然后再编写代码。此外,如果你是初学者,则参考文章中引用的书应该会有所帮助。

如需更多练习,请查看 Hackerrank 上的算法部分 (https://www.hackerrank.com/domains/algorithms/warmup )

回复 作者:克林特·帕特森 (未验证)

很棒的建议!我很好奇你想知道你使用了什么技术在 10 年前发布这篇文章,但我想我会在十年后回来查看回复。

很棒的建议,丹尼尔。“每天进行低级编程练习。” 这是一个很棒的建议,尤其是对“每天”的关注:)
除了这些技巧外,找到正确的课程或教程来学习编程语言也是必须的。如果我们从一个不太好的教程开始,那么我们最终会感到沮丧并浪费大量时间。https://hackr.io 可以在这里提供帮助,所有编程课程都由社区投票选出。

作为你第三个技巧的补充,也学习 vim,因为它几乎是 hi 的超集,你也学到了很多关于 vi、ex、ed 和 sed 的知识。

另外,对于第五个技巧,学习终端复用器(screen / tmux)或平铺窗口管理器(dwm / wmii)。如果你不必手动进行窗口管理,你可以很快开始将你的整个操作系统视为一个巨大的 IDE。例如,打开一个终端用于你的编辑器,一个用于你的调试器,一个用于你的手册页等。

很棒的建议。稍微调整一下,你可以将每个技巧应用于几乎任何职业。是的,包括专业写作!:-)。

我还建议每 1-2 年学习一门新的编程语言。现在很容易被归类为“Java 程序员”或“Python 程序员”或其他什么。新的语言不仅让你更具市场价值,而且教会你编程语言如何以及为什么工作——更重要的是,如何接触每种语言社区的生态系统和程序员文化。即使你仍然有自己喜欢的语言,这种普世主义也会大有裨益。

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.