编程哲学之 C# 篇:003——为什么选择 C#
国内开设C#课程的学校或培训机构是越来越少,使用C#作为开发的语言企业也是越来越少。企业要招C#的开发人员越来越难,会C#的要开发人员要找工作也是越来越难,然后我还是选择C#作为本系列的主要语言,我给出的理由是...
定位与目标
我在《编程哲学之C#篇:01——创世纪》就说了:“本系列核心内容是介绍各种哲学观和思维方式,随便把某种编程语言学了。”而这里的某种语言,我选择了 C#,理由是从语言的角度来说,C# 非常优秀,从一开始是借鉴 Java 到现在被 Java 或其他语言借鉴。而且在我的认知中,每种语言都有自己的哲学观和思维,所以这种语言越完善,那么它所包含的思想也就越完善。因此从学习角度考虑,我推荐 C#。
同时我又把本系列的目标读者设为想自学编程的初学者,基于这个原因,我选择了 C#。因为 C# 有一个优势,宇宙最强 IDE(Integrated Development Environment[集成开发环境])——VisualStudio,一个强大的 IDE 有各种智能提示,就如同你在写代码的时候,旁边有一个老师一直盯着你,告诉你接下来要怎么写,哪里写错了。想当年我自学编程的时候,教程中是推荐用 UltraEdit,教程作者给出的理由是你自己知道接下来应该知道写,还有哪里写错了,才是最牛逼的啊,就算到了现在,依然有人抱着用记事本写代码才是真的牛的观念。然而对于一个初学者,用一个不强大的 IDE,当代码出错的时候,你自己找不到原因,又没有人可以问,然后把你卡住了,这个时候就可能把你的编程兴趣扼杀在摇篮中,所以有强大的 IDE 很重要。
为什么选择 .Net 而不是 .Net Core
显然 .Net Core 才是未来,但因为本系列的所有例子都只使用控制台应用程序,两者差异不大,而 .Net 的官方文档更加齐全,网上例子也多。可以降低自学时的查询资料时间成本,所以选择 .Net,读者可以自行用 .Net Core 实现本系列出现的例子。
.Net 和 .Net Core 会在 2020 年合并成 .Net(本质是 .Net Core),很快就不用纠结了。
尚能饭否
C# 很优秀,但很尴尬的是,特别的在中国,越来越少企业在用,原因在于 Java 出得早,并且一早就实现跨平台,造就很多企业在技术选型时选了 Java。在很多编程语言书的前言中,都会把该语言描述的“此曲只应天上有,人间能得几回闻”的样子,但我觉得我不能坑人,我必须思考你要吃饭的问题,
因此:
- 如果你打算短时间内学成,并且学后奔着国内一线互联网企业去的,即不想先学 C#,再学 Java,那么你就直接去学 Java 吧。
- 如果你打算从事手游开发,那么 C# 就是非常不错的选择了,因为很多手游都是用 Unity(C#) 游戏开发引擎来开发的。
最后的安利
本系列的安利
我面试过一部分人,他们能很快地说出知识点是什么,但一问道为什么要这样,他们就卡住了。我也看过很多书,书中只告诉你什么是什么,但很少会告诉你为什么要这样。所以我一直在构思一本与众不同的书,更加偏重于思考,而不是各种语法。
C#的安利
C# 是一门很优秀的语言,各种编程概念都很现代和完整,所以学了C#,你的编程思想会走在其他语言前面。
结束语
本章介绍了我选择 C# 的原因。
下一章将介绍怎么安装宇宙最强大的 IDE——VisualStudio
问题:如果你有熟悉的编程语言,那么你知道该语言的核心思想和特性是什么吗?
编程哲学之 C# 篇:003——为什么选择 C#的更多相关文章
- 编程哲学之C#篇:02——学习思维
<代码大全>的第二章:介绍隐喻(类比)的思维方式, <经济学原理>的第二章:介绍怎么像经济学家一样思考, <计算机的心智操作系统之哲学原理>的第一章:介绍学习操作系 ...
- 编程哲学之C#篇:01——创世纪
我们能否像神一样地创建一个世界? 对于创建世界而言,程序员的创作能力最接近于神--相对于导演,作家,漫画家而言,他们创建的世界(作品)一旦完成,就再也不会变化,创建的角色再也不会成长.而程序员创建的世 ...
- 编程哲学之 C# 篇:007——如何创造万物
上帝拥有创建万物的能力,本文介绍创造万物的道,让你也拥有上帝般创造万物的能力! 道 中国哲学家,道家学派创始人--老子,在<道德经>写到: 道生一,一生二,二生三,三生万物 那么,是什么 ...
- Python黑帽编程2.1 Python编程哲学
Python黑帽编程2.1 Python编程哲学 本节的内容有些趣味性,涉及到很多人为什么会选择Python,为什么会喜欢这门语言.我带大家膜拜下Python作者的Python之禅,然后再来了解下P ...
- Linux shell脚本编程基础之练习篇
shell脚本编程基础之练习篇. 1.编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息. #!/bin/bash ] then echo "请输入一个参数& ...
- 浅谈.Net异步编程的前世今生----APM篇
前言 在.Net程序开发过程中,我们经常会遇到如下场景: 编写WinForm程序客户端,需要查询数据库获取数据,于是我们根据需求写好了代码后,点击查询,发现界面卡死,无法响应.经过调试,发现查询数据库 ...
- Scala进阶之路-并发编程模型Akka入门篇
Scala进阶之路-并发编程模型Akka入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Akka Actor介绍 1>.Akka介绍 写并发程序很难.程序员不得不处 ...
- 浅谈.Net异步编程的前世今生----EAP篇
前言 在上一篇博文中,我们提到了APM模型实现异步编程的模式,通过使用APM模型,可以简化.Net中编写异步程序的方式,但APM模型本身依然存在一些缺点,如无法得知操作进度,不能取消异步操作等. 针对 ...
- 从编程哲学到开发应用:Spring的初步应用
一.前言 在学习Spring的过程中,我们学习了很多东西,可是实际应用中,我们究竟用到了那些?常用的又是那种方法呢? 二.书上与开发的差异 1.IOC 1) IOC,控制反转,是Spring框架的核心 ...
- 并发编程之第三篇(synchronized)
并发编程之第三篇(synchronized) 3. 自旋优化 4. 偏向锁 撤销-其它线程使用对象 撤销-调用wait/notify 批量重偏向 批量撤销 5. 锁消除 4.7 wait/notify ...
随机推荐
- pinpoint:初始化hbase数据库
安装完成hbase之后,需要初始化hbase的pinpoint库(创建表). 1. 登录数据库 [root@monitor default]# cd /home/pinpoint/hbase-1.7. ...
- SpringBoot 01: JavaConfig + @ImportResource + @PropertyResource
springboot的前置知识:通过注解创建对象和读取配置文件 1. JavaConfig 设计思想 使用java类作为xml配置文件的替代,是配置spring容器的纯java的方式 可以创建java ...
- OpenCvSharp的安装和使用
OpencvSharp是opencv的C#版本,使用习惯了opencv的人学起OpenCvSharp会很容易上手,看了网上很多的安装方式,最后我感觉还是自己去下载安装包的方式最简单,通过Nuget的方 ...
- Kubernetes集群YAML文件详解
Kubernetes集群YAML文件详解 概述 k8s 集群中对资源管理和资源对象编排部署都可以通过声明样式(YAML)文件来解决,也就是可以把需要对资源对象操作编辑到YAML 格式文件中,我们把这种 ...
- C++初阶(类的访问权限以及封装+this指针+构造函数+析构函数+拷贝构造函数+参数列表+友元+内部类)
面向过程与面向对象 C语言是面向过程的,关注的是过程(函数),分析出求解问题的步骤,通过函数调用逐步解决问题. C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成. ...
- 关于Linux pyinstaller打包zmq.h报错
报错信息 6:10: fatal error: zmq.h: No such file or directory #include <zmq.h> ^~~~~~~ compilation ...
- oracle第二步创建表空间、用户、授权
Windows+r→键入sqlplus,输入已安装好的oracle数据库超级管理员账号密码登录.显示: 成功. 创建表空间: 创建用户并默认表空间: 授权该创建用户对数据库的操作: 代码: SQL&g ...
- PHP日期加减计算
PHP 标准的日期格式 date("Y-m-d H:i:s"); PHP 简单的日期加减计算 <?php date_default_timezone_set('PRC'); ...
- day41 6-1 安装配置maven & 6-2 创建maven项目 & 6-3 搭建springMVC框架 & 6-4 springMVC常用注解和封装工作单元
day41 调度器 定义 web.xml配置 控制器Controller 配置自动扫描控制器 在spring-mv.xml中加入 <!-- 启用spring mvc 的注解 --> < ...
- 【Java SE】课程目录
〇.课程简介 一.前言入门 二.数据类型.运算符.方法 三.流程控制 四.Idea.方法 五.数组 六.类.对象.封装.构造 七.Scanner类.Random类.ArrayList类 八.Strin ...