CCF中学生计算机程序设计入门-01-让计算机告诉大家我爱编程
编写第一个计算机程序
1 新建源代码
打开Dev-C++,有3种方式新建一个源文件
1)点击如下红色新建源文件图标
2) 点击如下文件– 新建–源代码
3) 使用快捷键 Ctrl+N
通过以上三种方式,创建一个源代码文件,就可以编写代码了,具体如下
2 编写代码
通过编程工具编写第一个C++程序,要求输出:I love programming.
保存源文件
把源文件保存到计算机磁盘中,具体如下
点击Ctrl+S保存,
指定一个保存目录
输入一个程序的文件名
C++程序是以 .cpp 结尾的
3 编译代码
C++是一种编译型编程语言,它要求开发者编写的符合C++语法的代码,必须先通过专门的编译器进行编译,转换成计算机可以直接执行的机器指令,然后才能运行并得到结果,可以通过如下3种方式编译
1)菜单进行编译
2)快捷图标编译
3)快捷键进行编译 –通过F9 快捷键进行编译
4 运行代码
编译后的代码可以进行,输出程序命令结果,本示例程序输出 “I love programming.”
可以通过如下3种方式进行运行
1)菜单–运行–运行或者运行–编译运行
2)快捷图标
3)快捷键 F10 运行或者F11 编译并运行
运行输出结果
5 修改程序并运行
通过编程工具编写第一个C++程序,要求输出:我喜欢C++编程!
拓展
1 代码注释
在C++中代码注释也非常重要,它不被编译器执行,主要用于开发者理解代码
注释有两种,分别是单行注释和多行注释
单行注释
以 // 开始,直到行尾结束,比如:
多行注释
以 /*开始,以 */ 结束,可以跨越多行。
2 代码结构
通过注释来说明代码结构
3新建源代码模板
新建源代码文件时,默认一些头文件,命名空间,main函数,每次写比较麻烦,可以通过配置新建源代码模板方式设置,后续新建时自动带出对应代码
1) 工具–编辑器选项 打开编辑器属性
2) 复制如下代码到输入框
3)再次新建源代码文件 自动生成如下代码
我希望我从未学过编程
我是一名程序员。你可能会觉得我是专业的软件工程师,但实际上,软件工程不只是一个专业,还是一种生活方式。连帽衫、乒乓球、吃不完的零食和苏打水……都是这种生活的一部分。但虽然这个职业可以给人带来那么多回报,我还是要坦白一件事:
有时我希望自己从来没有学过编程。
怪癖
自从我开始学习编程以来,就再也不能像以前那样轻松地浏览网页了。我无法再平静地接受在各种网站上遇到的各种 bug。每当有奇怪的事情发生时,我的好奇心就上了头,然后就会打开浏览器开发工具开始调试网页。
尝试提交表单时出现加密错误消息?看到这样的错误,我会深入 JavaScript 控制台,查找错误消息,深入研究源代码,并仔细观察进进出出的网络请求。页面 UI 看起来有些过时,或者页面布局很漂亮?不管怎样,我都会调整浏览器窗口大小,检查页面响应屏幕尺寸的能力。什么?你竟然选择了 Comic Sans 字体?我可能永远不会再使用你或你们公司的产品了。
请不要使用 ComicSans
职业生涯
觉得我的这些浏览习惯很怪异吗?这还不算啥,我和其他软件工程师的对话会让你印象更深刻的。总体而言,工程师往往固执己见。我们的血液中流淌着迂腐的基因。你喜欢使用空格还是 tabs 缩进代码?你更喜欢 Vim 还是 Emacs?Chrome 还是 Firefox?
聪明点的人会问到,这些对话“真的重要吗?”。Bikeshedding(在琐碎细节上浪费时间)是确实存在的现象,大家都需要经常反省。
xkcd——真正的程序员
随着越来越多的公司采用敏捷方法,我们还得时常考虑在 Waterfall、Scrum 或 Kanban 开发生命周期之间权衡取舍。我们所有人都喜欢鄙视 Waterfall,毕竟这是老式的低效率公司所使用的遗留品。但是 Scrum 与看板之战还在继续。
你竟然是 Scrum 的信徒?我敢打赌,你为了满足那些 time box 会仓促提交混乱的代码,才能在冲刺结束之前赶上假想的时限。
说到敏捷,故事的重点在哪里?时间尺度?努力?复杂性?风险?这些都有?你我可能会花费几小时时间来争论每个定义的优缺点,最后还是无法达成共识。
在某些时候,这种争论可能会演变为更多的 bikeshedding,但能够相互理解和有效沟通是至关重要的,其中就包括了对我们日常使用的术语达成共识。
前端开发带来的争论又是数不清的,其中最典型的是:“我们要到什么时候才会放弃对 Internet Explorer 的支持?”我必须在“讨厌 Internet Explorer,想要放弃它”和了解还在用它的客户需求之间找到完美的平衡点。
持续学习
持续学习是每一位开发者必备的能力,因为技术形势日新月异。每月都有成百上千的新库和框架发布。JavaScript 倦怠不是什么幻觉,“学不动了”也不仅仅是调侃。
我得花一天的时间配置 Webpack、Rollup 和 Babel 以使用最新的 ES6+ 语法,而旁人听我这么说就像在听天书。Angular 和 AngularJS 截然不同?LitElement、Svelte 和 Stencil 似乎是很有前途的 Web 组件解决方案?Deno 可能是下一个 Node?听着都像是谜语。
当有人问我做什么工作时,我总会蹦出来一堆术语:“我通常使用前端技术,例如 HTML、CSS 和 JS。有时我必须使用 PHP 或 SQL,但我更多是 MEAN/MERN 栈开发人员。有时我使用 Heroku 之类的 PaaS 技术,还有时我会使用 AWS 或 GCP 之类的 IaaS 提供商。”
个人生活
在业余时间里,我读的书干货十足,例如《干净代码》《重构》和《领域驱动设计》。我不是在看教科书,就是在阅读里面写着可疑建议的文章,或观看一些编程教程。关于编程的播客更能吸引人,这样我就能在路上听某人谈论写代码的方法,然后我又可以花一天时间谈相关话题了。
除了在线获取内容外,软件工程师还会花费大量个人时间来在网上创建内容。我个人的兴趣是构建简单的应用和游戏,其实没人看得到。这是浪费时间吗?也许是吧,但的确挺有意思的。
企业 BS 生成器应用
事实是……
可事实是,编程给了我创造和创新的机会。它帮助我将创意变为现实,让我几乎从零开始构筑了很多东西。软件工程使我能够解决有趣而艰巨的挑战,理想情况下还能让人们的生活更轻松一些。编程使我的思维更具逻辑性。编程让我有机会不断学习,我还能以编程为职业获取薪水!
事实是,我喜欢编程。
原文链接:
https://hackernoon.com/i-wish-i-never-learned-to-code-7a1m3wwx
延伸阅读:
关注我并转发此篇文章,私信我“领取资料”,即可免费获得InfoQ价值4999元迷你书,点击文末「了解更多」,即可移步InfoQ官网,获取最新资讯~
在typescript中为什么要重复定义interface
代码范例:
定义pinia的useAuthStore对象,存储登录信息auth
vue路由控制:
在上面的代码中,有一个问题,既然定义了定义pinia的useAuthStore对象,用来存储登录信息,那在路由控制里import 了 useAuthstore后直接使用这个对象就好,怎么还要定义AuthStore这个interface呢?
原因是:
类型安全:
- TypeScript 的类型检测可以帮助我们在开发过程中尽早发现潜在的错误。
- 通过定义 AuthStore 接口,我们明确了 useAuthStore 返回的对象的结构,包括 user、returnUrl 等属性的类型。
- 这可以避免在使用 useAuthStore 时出现类型不匹配的错误。
- 接口清晰地描述了 useAuthStore 的功能和返回数据的结构。
- 这使得代码更容易理解,尤其是在大型项目中,多个组件都可能依赖于 useAuthStore。
- 接口可以作为一种契约,保证不同组件对 useAuthStore 的使用方式一致。
- 如果将来需要修改 useAuthStore 的实现,只要接口不变,其他依赖它的组件就不需要修改。
- 类型推断的局限性: 虽然 TypeScript 有类型推断的能力,但在某些复杂场景下,显式地定义接口可以提高代码的清晰度和可靠性。
- 接口作为文档: 接口就像一份文档,描述了 useAuthStore 的功能,方便其他开发者了解和使用。
虽然可以直接使用 useAuthStore ,但定义 AuthStore 接口是一种最佳实践,尤其是在大型项目中
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。