自己与C#与Java的一些经历

作者从自动化专业转向编程领域,经历了从C#到Java的学习过程。分享了对面向对象的理解,以及在.NET和Java中开发应用的经验,包括遇到的挑战与收获。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己本身是学习自动化的,毕业的时候感觉就业迷茫就去培训班学了.net,当时老师讲什么是面向对象啥的,感觉就是在讲玄学。

不过至今为止我想什么是面向对象,也是众说纷纭。每个人的理解多少都有偏差,可能重要的是自己认为理解了,并且与学习中的编程概念相吻合就可以,我想并不存在绝对的面向对象和面向过程。只能说偏重点不同而已。

因为如果只有对象没有过程那么所有的东西都是静态的,在面向过程里面也当然是存在对象的,一个结构体也可以理解为一个对象。当然 面向对象更侧重于对数据的封装和标准化 ,这就是做说的继承与多态。

好几年的时候自己都是用 .net formwork做一些工具或者自动化信息化的东西,用 winform或者是webform都可以一个人做一个小系统。这两个工具确实是非常适合个人开发,或者作为一个人的玩具一样,很长一段时间,自己都是为这两个工具投入非常多,也做了几个人领导惊叹的小系统。当时也很兴奋的。当然不知道什么原因,自己做的东西总是在市面上没有得到很大的推广。总是让大家感觉不错,但是最后都没成为一个产品,很长时间自己对此非常烦恼。因为感觉自己投入了非常多的精力。

以为之前做的都是PC端的软件。后来自己想是不是因为,PC端总是公司控制着用不用,所以后来有个机会做手机端的软件,那么自己就毫不犹豫选择了合作,并且做了手机端的一个网站。使用的是webform的框架,不过做到后来,因为是合作做这个软件,一开始合作的都非常好,感觉能成,后来出现了几个问题,有一个难点无法攻克,也就是读写EXCEl表格的速度,随着EXCEL表格的公式增加,变得越来越慢,解决这个问题不是没有办法,只需要将公式写在软件里面或者服务器里面都可以,但是这样大家的意见不同,就做不下去了,但是自己非常伤心,感觉自己的心血又白流了。

后来自己想不和朋友做了,就自己做吧,做一个手机端的网站也行,自己做了一个类似维修笔记的网站,后来也遇到了问题。就是与云服务器的问题。使用了阿里云,但是后来感觉自己控制不好,问了问题只有自己一个人确实弄不过来。

所以后来我老婆介绍我认识了一个搞Java的朋友,简称为小曼,本来我是想想让她帮忙给我看下我做的怎么样,我遇到的几个问题如何解决。但是发现,她对.net并不懂,也不会,感觉我们两个说的好像驴头不对马尾。而且还说我做的画面很难看。

最大的打击是她无法使用C#帮助我改善这个系统。如果想让她帮忙那么只能是转java,将这个系统使用Java重新写一遍。这是我无法接受的,因为如果使用Java重写了,那么我用C#做的那个软件又何去何从呢,我可以用Java重新做,但是我不想把C#给丢了。我想我做的那个东西总是能够有一些意义的。或者说C#总是有一些意义的。

所以首先我将C#版本做了一个winform版本的软件,并且将源码和系统开源放到了网上,也有几十个人下载了,然后我心里就安慰了很多。真是,我感觉至少有人用了,至少对别人起到了一点点的作用,至少没有白做。

然后自己就开启了java的旅途。我本来以为java是和C#完全不同的语言,或者说完全不同的东西。而且我一直认为java是比C#晚出现的语言,而且java的声音更多一些。

然后搞Java的小曼,给我说了一些学习Java的方法,和途径,就是用bilibili的网站,上面有很多的免费的课程都不错。所以我首先找到了一个java学习的课程,讲还不错。其实在看这个Java学习视频之前,自己也通过百度啥的,自己开展过几个过程了,不过基本后来都劝退了。

记得有一次是,自己安装了一个 eclipse ,然后经过一个环境变量的设置,然后认为就会想 C#的VS一样,可以写代码了。代码确实可以写了,但是呢没有什么提示,自己的英语又不好,感觉没有提示简直是一场噩梦,而且当时自己认为java可能就是这样的,就是没有提示的,做Java的都是靠记忆编程的,完全靠手写做出来的。要不然安装上之后怎么会没有呢。

然后后来自己可能感觉还是不服气,就在哔哩哔哩上看课程,有一些发现,首相呢,忽然感觉java怎么就是C#的课程呢,自己学的是Java啊,不是C#啊,而且发现讲Java的比讲C#的人,有耐心,并不是交给大家如何实现什么功能,而且讲解内部的实现原理,编译器的编译过程啥的。虽然自己用了C#这么多年,但是C#是如何实现的,还真的没有研究过。看到这样讲Java忽然有一种很亲切和温暖的感觉。而且发现听讲课的人也很多,而且发现,编程语言的学习还可以真么详细的讲解和学习,真的是奶妈级的讲解。不过缺点就是进展的非常的满。像自己这样的急性子,真的是受不了啊,怪不得叫 Java,java 就是咖啡的意思,学java 就是像喝着咖啡闲聊一样,但是对于我i们这种靠时间赚钱的人来说,简直是巨大的折磨和摧残,曾经我有一个比喻,如果C#是一辆自行车,那么VS就是一个三轮车,你上去后很快就会骑行,如果java 是自行车,那么 你首先得到的是一堆零件,或者是买零件的途径,你首先要找到零件,然后要学习很多组装或者自行车原理的技术。然后还要告诉你自行车的发展史。然后可能还要学习一下汽车的构造原理,钢铁材料的铸造原理。

然后可能你终于能骑一下,Java的自行车了,你可能忽然发现没有合适的轮子,现有的轮子可能不合适,然后你就疯狂的找轮子,找来各种轮子的来测试,发现没有太合适的,而且太多太多的种类的轮子,可能测试一辈子都测试不完。你可能又要放弃了。

无论你用那个轮子可能都需要你进行一些改造或者优化,不然可能这个轮子永远转不起来,或者说转不好。

言归正传,后来自己发现Java也是可以做到每个字母输入都有提示的,只需要在设置选项设置一下就行。设置也很简单,但是问题是有多少人知道需要设置呢。还有为啥默认不是又提示的呢。难懂有提示不好吗,或者说真的有人不用提示吗,这个开发工具的人到底是又多么的自大后者狂妄,默认就没有自动补全功能,这或许是搞Java的头发掉的快的原因吧,我确实理解不了这个事情。在VS那么这么现成的事情,到了Java这里怎么就这么难呢,你后者说Java的很多工具是免费的,免费的我认为也没什么可说的,但是我像说的是,那么搞Java的为啥说java 工具非常好呢,甚至有些说比VS还好,你们说免费是好我认了,你们说即免费工具又好,服务又好,这事我感觉实在害人。或者说是误导人。Java很多开源的工具只能说可以使用,但和微软的VS比确实相差太远了。虽说为人收费不好,但是我们确实需要好用的工具,人类的发展不是越发展人们越让自己痛苦的,而且越来越为人民服务才行。要有服务精神才行。而不是一味的技术装逼,什么都是用命令行编程,让别人感觉很厉害,但是都是编程语言的输入。没什么可骄傲的。

当Java基础都准备好了以后,你发现你需要做一个什么产品了,如果做web开发,那么问题来了。学什么框架,因为Java开发提倡用框架来编程。

在.net里面这些概念比较模糊,一些东西都是为了解决一个问题或者实现一个功能。

对于框架来说,Java发明了很多看似很玄的名词,比如 反射, 控制反转 松耦合 高内聚 依赖注入 面向切片 等等 单单看这些名词就会劝退很多人。Java喜欢很多事情反着来,或者说即使让人难受着来,所以很多学Java的都是喜欢写心得,因为很多概念让人学的很压抑,但是后来我发现这一切一切都是Java的圈套,或者说故弄玄虚。所有的这个什么反这反那的,其实都是在一些应用场景下的自然发展出来的一些解决方案。没有什么反正之分。

比如说反射,其实就是动态的加载一个类的方式,或者说是参照一个类的样子再造出来一个类,可以在运行的过程中做这个事情。有点像黑客的窥探技术。只不过Java起的名字比较误导别人。

控制反转,这个是对于类的调用的权力是谁来执行,是由领导头目来发号施令,还是下面的人自行决定,这个也没有什么反正的问题。真不明白Java叫的这些名字都是让人匪夷所思的感觉。或者是与日常生活中的概念相反的来的,难道发明Java的认为日常的生活和Java的泛着来的吗?为啥总喜欢用反什么起名字。

松耦合就是间接调用函数或者类的方式。啥是间接调用,就是中间多了一个传话的人,或者说多了一个配置的字符串,通过配置的字符串来进行判断,这个最早是 XML文件,来做配置的选项输入。后来增加了使用注解,无论哪一种本质都是配置的字符串变量。通过这些字符串来对源码进行操作,实现一些自动化的功能。所以有些书上说,注解本身没有功能,重要的是你如何使用注解。

这句话的理解可以是,命令本身就是一句话,重要的是你如何执行这个命令。

其实我很长时间没有理解框架里面的额注解,因为我的印象里面,只用写代码才能实现功能,调用外面的类就要通过new来实现。但是在spring框架里面,使用的都是注解来实现这些功能,但是注解本身又没有什么功能,又不值一个函数,所以自己一直想不明白,注解是怎么实现的这些功能。其实就是后台或扫面注解的句子。发现注解后,对使用代码对使用注解的代码进行各种功能的实现个操作,也就是说注解是一个引子或者说导火索,或者说是一个命令,框架的代码来使用这个命令的功能,所以说功能还是由代码来实现的。

有人说注解就是标签,比如冰箱上的标签,或者衣服上的标签,是对这个东西的一种描述。这个说法对,但也不对,这个更像是一种物体发出的一种请求信号,这个信号希望别人对它做些是么东西。比如说请给我穿上什么衣服,那么就需要代码来实现穿衣服的功能,所以注解并不是不具备功能的,注解是引发功能的一个变量。

对于.net来说,并不是对注解特别的执念,所以很多学.net的对注解没有那么大的热情,或者重视度,而且通过注解来实现的方式,很多时候直接通过代码的方式来实现,其实是一样的,额日期额可能更加的容易理解和高效,么必要为了注解而注解,注解只不过是一种的实现方式。并不一定是组好的实现方式。

Java是后端语言,在学C#之前自己认为语言应该是部分前后端的,搞了Java后发现,Java确实是后端语言,因为Java只能跟命令行打交道,没法控制前端的UI直接渲染,所以自己无法接受这个不能通过UI来表现自己的语言,搞啥都是在命令行看输出的一行行字体,真的是感觉好压抑和封闭。当然Java为了彻底的跨平台只能舍弃一些东西,有的就有失吗。

就说这么多吧,毕竟自己不是专业的,只是从自己的较多说了一些对C#和Java的理解。没个人经历不同,使用场景不同,所以理解也不同。无论怎么说,理解一种语言是好说的,因为思想没有固化,理解两种语言是由困难的,如果通过培训班来引导会好很多。自己折腾Java确实特别容易迷茫和放弃。

后来也知道了C#与Java的渊源,其实两者很相似,很多技术是相同的。语言的本质确实应该不区分公司和地域的。但是不同的生态出现了不同的名字。希望以后Java和C#能够真正的承认彼此的融合之处,不用大家这么站队或者纠结。其实选择那个都很好,而且选择那么都包含了对方的一部分。

自己本来是做自动化的,自动化领域还是以PC为主,所以C#的生态更完善一些。而且C#其实是推广了Java的领域和知名度。所以请那些Java的极端分子认可那些做C#的人,也认可C#对世界做出的贡献。认为微软为这个世界做出的贡献。也谢谢帮助我认识Java的人,谢谢小曼,谢谢哔哩哔哩的那些免费的课程。也感觉微软的专业强大和服务精神。把C#做的那么优秀。谢谢

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值