致年轻的自己,这是实现目标的四个技巧

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

Opensource.com

亲爱的年轻的自己:

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

在接下来的十年里,你会发现你热爱计算机,但是对于你基于这份热爱的事业起步存在障碍。你会被来自在线出版物、电子书和教程的大量信息淹没,它们承诺教会你 X 语言和 Y 框架,并因缺乏方向而犹豫不决。因此,这里有一些来自你未来自己的建议。

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

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

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

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

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

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

对你来说,最好的编程方式是使用 Emacs 文本编辑器。今天,Emacs 有一个新的 Emacs 网站,上面有很酷的视频,但你现在还无法访问。因此,从 Emacs 窗口中使用热键组合 Ctrl+H+T 来调出教程。而你使用 Emacs 的最佳方式是在 Linux 终端中。

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

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

使用开源软件。

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

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

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

User profile image.
Holberton School 全栈工程师

9 条评论

你好,

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

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

回复 作者:John Boyd (未验证)

感谢您指出这一点。我们将联系作者并尽快添加链接。

回复 作者:Clint Patterson (未验证)

嗨,John,Clint,

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

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

回复 作者:Clint Patterson (未验证)

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

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

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

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

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

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

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