c 语言编程学习 编程环境
每当我访问r / programming时,都会有一个程序员的帖子,上面写着“我已经完成Sololearn课程,通读编码书籍,并完成了我的CS课程。 我什至理解大多数编程笑话。 所以,我已经足够好了吗?”。
通常,当我看到这些帖子并转为“不,您不是。 您是否以代码方式思考使用母语的方式? 如果否,则重新阅读“像程序员一样思考”。
达到流利的编程语言的道路很漫长,而且没有终点,最终,您需要放弃CS测验,开发自己的产品,并(我知道您一直在等待这个)寻找工作。
如何摆脱编程学习者的不自信,成为一名专业人士? 这是我个人旅行的逐步说明。
步骤1.以选择的语言完成基本项目
看到有多少编程学生精通一门语言,这让我感到很难过,因为一系列抽象概念对在课堂外如何使用它完全一无所知。 这就是为什么我孜孜不倦地强调使程序员成为自信的简单,直接项目的重要性的原因-这是我最喜欢的项目。
用您正在学习的语言创建井字游戏
游戏本身很简单,但是项目对您掌握编程逻辑的影响却是惊人的。 以下是编码遵循的规则:
- 创建一个九块砖的运动场
- 将X分配给玩家,同时将O分配给计算机
- 添加一个弹出窗口,询问玩家要在哪里放置X
- 玩家放置X之后,计算机放置O
- 确定获胜者
制作一个Hangman游戏(带有或不带有GUI)
该任务分为两个部分-将游戏的基本逻辑转换为代码,以及构建用户友好的界面以使玩家感到愉悦。 首先,让我们概述一下游戏规则:
- 创建一个字母列表,每个字母中包含5–6个字母,并使每个游戏显示一个随机条目
- 要求游戏参与者猜出所选单词的字母
- 如果玩家猜对了字母,请使用它来填写相应的空白
- 如果玩家做出错误的猜测,请让他知道他被绞死之前尝试了多少次
在代码中实现了上述原则之后,请集中精力包装最终产品。 由于编程与创造力无关,而是功能,因此,使用现成的GUI软件包非常合适。 对于Java,我通常使用Swing-有许多可用的接口元素。
做你的研究
如果这些示例项目太基础,那么在线上有很多示例可以帮助您提高程序员的技能。 这是编程学生必备的平台列表。
Codegym是一门Java学习课程,为初学者和中级学习者提供了数十种Java游戏。
ZetCode共享了一组令人惊叹的Java 2D游戏(您可以查找多个现有项目的代码,也可以获取有关实践问题的动手游戏开发经验)。
Codingame是我最喜欢的实践项目之一,支持25种语言,因为它可以教会新手开发人员承担责任。 基本上,该平台允许程序员从同行停止的地方开始,为创建全球游戏做出贡献。
步骤2.使用编码挑战平台
为确保您有信心在现实世界中使用编程语言,请将软件开发教育的最后阶段专用于获得尽可能多的编码实践经验。
好消息是,有很多有用的资源会给开发人员带来难题和实践难题。 这是我最喜欢的:
1. CodeGym (Java)
我是一名Java导师和发烧友-这就是为什么我对讨论新项目感到特别兴奋。 现在,CodeGym是我通常引导学生使用的第一个平台。 一方面,此资源仅以Java为目标-因此,开发团队对语言的了解非常深入。
除此之外,我发现CodeGym提供的学习曲线非常结构化-所有练习问题都根据其针对的概念进行了分组。 您可以找到许多有关Java语法的任务,然后继续进行集合,类型转换,OOP和其他概念。
总共有1200多个练习问题-完成所有这些练习后,您一定会准备好进行工作面试。
2. Coderbyte (JS,Java,Python,Objective-C,Swift等)
Coderbyte提供10种以上的编程语言,为具有不同经验和技能水平的开发人员提供了数百种语言。 根据您的技能,您可以选择简单的任务(在字符串中找到最短的单词)或高级难题(如图形基数匹配中的难题)。
3. Codechef (支持35种编程语言:C + C ++,Java,Python等)
如果您想在学习过程中引入友好的竞争,一定要尝试一下Codechef。 该平台举办定期的编程比赛,并为Java,Python,C和其他流行语言提出了广泛的挑战。 您可以使用内置的工具编辑器来编写和检查代码的正确性(如果您要求我,则具有非常方便的界面)。
4. LeetCode (C,C#,C ++,Python,Ruby,Java和JS)
如果您打算寻找编程工作,请不要错过LeetCode。 这个平台是在实际条件下练习编码并准备面试雇主的真正交易。
LeetCode支持七种编程语言-C,C#,C ++,Python,Ruby,Java和JS。 您可以探索平台的两种模式-按主题分组的挑战或“模拟面试”-在这种模式下,您会被有关该语言所有方面的编码问题所困扰,并且回答问题的时间有限。
5. Sphere Online Judge (超过45种编程语言,包括Haskell,Ocaml和深奥的语言)
SPOJ是目前最大的编码实践平台之一,面临超过2万个编程挑战。 Sphere Online Judge还定期举办黑客马拉松,使开发人员可以面对面并共同改进。
就我个人而言,我对SPOJ完全是点对点的事实有疑问,这意味着您不会看到官方的实践问题答案,而必须信任其他开发人员。
步骤3.向同伴寻求帮助
即使您解决了实践问题并非常了解该语言的理论,也要成为顶尖的编码人员,还有更多。
沉浸在编程社区中将帮助您发现专业人员通常面临哪些挑战,哪些项目最受欢迎,了解行业内的笑话等。
这样,当您完成第一份编程工作时,将办公室变成第二个家就没有问题。
您可以在哪里与程序员取得联系? 我通过签出与同伴建立联系的论坛和沟通渠道进行了整理,希望这些对您有所帮助。
Reddit频道
通用编程 :
编程语言 :
- Java: r / java , r / javahelp
- JavaScript: r / javascript , r / LearnJavaScript
- 斯威夫特: r / swift
- Objective-C: r / objectivec
- PHP: r / php
- Python: r / python , r / learnpython
- C#: r / csharp
- C: r / c_programming
松弛渠道
一般
- Hashtag开发人员-Slack上最大的编程渠道。
- 欧洲开发人员资源库 ( European Dev Explorer )是考虑迁移到欧洲国家的开发人员的有用渠道,涵盖了就业市场,生活成本,税收等。
- Angular JS聊天 -最好的Angular开发人员共享案例并回答编码问题的地方。
- DevOps聊天 -最令人讨厌的Slack社区之一,主要涵盖了深入的DevOps概念。
编程语言 :
- #Ruby
- #php
- #Python
- #node.js
- #走
其他平台
以下是其他知名论坛,无论是初学者还是高级程序员都经常在这里闲逛:
StackOverflow-该平台在点对点论坛中占主导地位。 在这里,您既可以得到理论问题的答案,实用建议,也可以得到代码的合理反馈。
SitePoint是Web开发人员和设计师中另一个受欢迎的论坛-除了在开发中向您推荐之外,在SitePoint上闲逛还将有助于了解其他部门(UI / UX,市场营销等)的同事。
黑客新闻 — 黑客的第一论坛,涵盖了业界的最新新闻,回答问题并分享了工作经验。
步骤4.在线共享您的项目
养成格式化代码和自已完成的每个项目的自述文件的习惯,以使员工在阅读时不会费劲。 如果您还没有GitHub帐户,请立即获得一个(对于我来说,大量的Github项目是将编程学生和专业人员分开的)。
如何确保您的项目准备好与世界共享? 这是一个简短而有用的代码格式检查清单:
- 在自述文件中详细描述该项目,以使员工了解您的工作情况
- 避免粘贴准备就绪的StackOverflow或Github代码片段。 可以重写,但是不能直接使用别人写的东西,因为您将无法详细解释代码的工作原理
- 认真命名所有对象和变量。 对于初学者来说,创建带有奇怪的仅供内部使用的名称的变量(在“ 0hy1”行中)是很常见的。 这样的命名做法可能看起来更快-但是,这会使您的代码极不全面,并且从长远来看很难维护
- 留下评论以确保其他程序员可以理解该项目。 因为在某个时候,您将在一家公司工作,所以留下评论来指导将接管该项目的同行是必不可少的做法。 这就是为什么最好养成习惯,提早评论您的操作并仅公开共享评论的代码
- 对项目进行单元测试。 每个人都知道单元测试是开发人员的工作,因此员工已经从求职者那里获得了期望
- 在整个项目中坚持一致的代码结构和样式
结论
如您所见,学习编程语言只是编程之旅的开始。 好消息是,无论如何,等您一路走来都是一件有趣而令人兴奋的事情,因为您终于可以构建实际的解决方案,寻找有薪工作,并自豪地称自己为开发人员。
为了弥合学习与专业之间的鸿沟,专注于利用理论知识解决实践问题,在线创建和共享您的项目,并且别忘了访问在线开发人员社区-堆栈溢出,Reddit线程和Slack渠道。
首次发布于GitConnected [paywalled]
翻译自: https://hackernoon.com/you-learned-a-programming-language-but-how-do-you-start-coding-80ab300w
c 语言编程学习 编程环境