长江后浪推前浪、一浪更比一浪强!想专一就选C++!!!噩梦缠身便是学习C++的感觉~~~痛并快乐着~~~

想专一就选C++!!!


不知道什么时候发生的一个现象,大多数人刚开始学语言,听到C和C++给人的感觉就不好!

打篮球的女孩最帅

这东西,一听好像就不是Java、Python时尚、潮流的主。狂拽炫酷┗( ▔, ▔ )┛

我们看看新一代选手的实力:

仅Java和Python用途包括方面好像就已经胜利了/(ㄒoㄒ)/~~

Android & IOS 应用开发,视频游戏开发,桌面GUIs(即图形用户页面),爬虫,Web开发,软件开发,架构等。

尤其是潮流的方向和大家熟悉的:网站开发、大数据、人工智能等等,

给人的感觉就是这些东西好像和老牌的C\C++一毛钱关系都没有。

再看c++的缺点与缺陷:

  1. 相对java来说,没有垃圾回收机制,可能引起内存设漏;
  2. 内容较多较难,学起来相对困难;
  3. 等等(不列举了,不好意思(ಥ_ಥ) )

而且同样的功能,Java和Python的代码量更少,简洁方便。

这让很多人觉得花很多精力去了解这样的老前辈,有何益处???自讨苦吃???

长江后浪推前浪

 

让我们看看老一辈选手的实力究竟如何:

C++是在C语言基础上开发的一种集面向对象编程(Object Oriented Programming,OOP)、泛型编程和过程化编程于一体的编程语言,是C语言的超集。它是一种令人兴奋的语言(End),在C语言的基础上添加了面向对象编程和泛型编程的支持。学好C++不仅能够让你熟悉一种编程语言,还能够深刻理解编程思维,对于快速上手其他编程语言也是非常有帮助的。

  • C++继承了C语言高效、简洁、快速和可移植性的传统。
  • C++面向对象的特性带来了全新的编程方法,这种方法是为应付复杂程度不断提高的现代编程任务而设计的。它的面向对象编程并不仅仅是将数据和方法合并为类定义,还有助于创建可重用的代码,这将减少大量的工作:
    • 信息隐藏可以保护数据,使其免遭不适当的访问。
    • 多态能够为运算符和函数创建多个定义,通过编程上下文来确定使用哪个定义。
    • 继承能够使用旧类派生出新类。
  • 方便使用现有的类。设计有用、可靠的类是一项艰巨的任务。幸运的是,面向对象编程语言使程序员在编程中能够轻松地使用已有的类。厂商提供了大量有用的类库,包括设计用于简化Windows或Macintosh环境下编程的类库。C++真正的优点之一是:可以方便地重用和修改现有的,经过仔细修改的代码。
  • C++的模板特性提供了另一种全新的编程方法——泛型编程,使得不同的数据类型能够采用相同的方式来操作。比如,C++可以用同样的方式访问vector、list等不同数据结构容器中的数据。
  • 支持大型程序。本质上讲,C++是为大型项目而存在的。当开发中小规模的项目时,C++的优势可能表现得并不明显。但当你的项目规模达到了一定程度,并依然对性能要求很高时,C++依然能够满足这样的要求,Java、C#等语言却可能因为垃圾回收机制导致响应速度变慢。因此,从项目利益的角度来说,C++语言是非常好的选择。
  • 应用领域广。C++在服务器端开发、网络开发、游戏开发、计算机视觉(如数字图像处理)、操作系统等多个领域都有广泛的应用,常见的有MySQL,VisualStudio,3DMAX等等。

看了那么多,感觉和自己很遥远啊!几十万高并发高性能的程序?想都没想过,更别说自己去写一个编译器、开发一个新的语言?简直天方夜谭!想想就感觉做噩梦一样子!

噩梦缠身便是学习C++的感觉~~~痛并快乐着~~~哈哈哈O(∩_∩)O

噩梦并不可怕,可怕的是我们没有了信心:定一个目标,走到哪自己说了算!Who Care?

看到要学的东西繁杂,好像就没有了兴趣,看到平时工作也不需要自己做那么多事,好像就事无观己,完成自己的就是天下太平。好像35岁之后淘汰的技术生命贡献者们,也不缺乏技术,为何没有人要了呢?表面的东西,总有人比你更厉害,和你一样厉害的,没有更大的社会压力,刚毕业给钱就干。逼上梁山,转行大潮∑(っ°Д°;)っ~~~

也不至于那么凄惨了,刚开始目标没必要那么大,雕琢自己的代码,我个人觉得是一件非常有意思的事情。同样的功能,优美的字符是那么的神清气爽、仿佛就是在给机器赋予生命力(〃'▽'〃)

说到优美的代码,在这里磊磊就给大家分享一个:在学STL第一个容器String容器时,关于assign(赋值)函数的定义源码,真的是让我非常吃惊。优美到得发个朋友圈祝贺一下下自己发现的新大陆:

这里给分享一个持续更新的C++STL的详细教程

让我对编码有了全新的认识:

什么叫严谨?什么叫规范?什么叫简洁?什么叫强大?无法概括

光简洁不够强大不够优雅不行,光强大不够简洁不够优雅不行,光优雅不够简洁不够强大不行

给各位看官也分享一下吧~

如下源码以及vs里的截图:

	basic_string& assign(_In_reads_(_Count) const _Elem * const _Ptr, _CRT_GUARDOVERFLOW const size_type _Count)
		{	// assign [_Ptr, _Ptr + _Count)
		auto& _My_data = this->_Get_data();
		if (_Count <= _My_data._Myres)
			{
			_Elem * const _Old_ptr = _My_data._Myptr();
			_My_data._Mysize = _Count;
			_Traits::move(_Old_ptr, _Ptr, _Count);
			_Traits::assign(_Old_ptr[_Count], _Elem());
			return (*this);
			}

		return (_Reallocate_for(_Count, [](_Elem * const _New_ptr, const size_type _Count, const _Elem * const _Ptr) {
			_Traits::copy(_New_ptr, _Ptr, _Count);
			_Traits::assign(_New_ptr[_Count], _Elem());
			}, _Ptr));
		}

	basic_string& assign(_In_z_ const _Elem * const _Ptr)
		{	// assign [_Ptr, <null>)
		return (assign(_Ptr, _Convert_size<size_type>(_Traits::length(_Ptr))));
		}

	basic_string& assign(_CRT_GUARDOVERFLOW const size_type _Count, const _Elem _Ch)
		{	// assign _Count * _Ch
		auto& _My_data = this->_Get_data();
		if (_Count <= _My_data._Myres)
			{
			_Elem * const _Old_ptr = _My_data._Myptr();
			_My_data._Mysize = _Count;
			_Traits::assign(_Old_ptr, _Count, _Ch);
			_Traits::assign(_Old_ptr[_Count], _Elem());
			return (*this);
			}

		return (_Reallocate_for(_Count, [](_Elem * const _New_ptr, const size_type _Count, const _Elem _Ch) {
			_Traits::assign(_New_ptr, _Count, _Ch);
			_Traits::assign(_New_ptr[_Count], _Elem());
			}, _Ch));
		}

	template<class _Iter,
		class = enable_if_t<_Is_iterator_v<_Iter>>>
		basic_string& assign(const _Iter _First, const _Iter _Last)
		{	// assign [_First, _Last), input iterators
		return (replace(begin(), end(), _First, _Last));
		}

                                  (因为标准库的基本都是如此严谨、整齐、划一的风格,就不再赘述了)

看到之后,除了欣赏就是自我检讨+自我检讨:然后好像明白了个事实:我好像只会写bug!!!!!!

 

 

        /(ㄒoㄒ)/~~

         而且幼稚的像天线宝宝

 

 

 

略微总结:c++在c语言的基础上增加了不少的内容:

  1. 类型检查更加严格
  2. 增加了面向对象机制
  3. 增加了泛型编程的机制
  4. 增加了函数重载和运算符重载。
  5. 异常处理机制
  6. 标准模板库STL。

   C++兼容里c语言的绝大部分内容,但还是有一些差异的,不兼容的,比如c语言允许从void* 隐式转化为其他类型的指针,这在c++中是不允许的。

c++的优点:

  1. 代码可读性好。
  2. 可重用性好。
  3. 可移植。
  4. C++设计成无需复杂的程序设计环境
  5. 运行效率高,高效安全
  6. 语言简洁,编写风格自由。
  7. 提供了标准库stl
  8. 面向对象机制
  9. 很多优秀的程序框架包括Boost、Qt、MFC、OWL、wxWidgets、WTL就是使用的C++。
  10. 等等

  c++更适合大项目,在大项目中c++是其他言语不可比拟的。做较小的项目,性能可能比不上java等常用主流语言。


End

写这篇文章就是想对自己以及还在学习C/C++编程路上的你说:不管学习哪种语言、哪项技术、以及从事什么行业、做什么工作,每一样事物都有他的两面性,我没有资格去评价任何技术的好坏,更没有资格去评价事物。但是这些都不重要。重要的是:有一个清晰目标和动力。虽然我们学C/C++的目的不是开发一种语言的编译器,更不是开发一种新的语言,哪怕只是为了生活,都不应该放弃自己,应付式的学习,应付式的活着。

当我们发现它的日常工程好像没有那么强大,而且它也不是时代的宠儿了,具有发展前景的工作需要,使我们渐渐远离了过去与我们一同并肩作战的“朋友”,但当某一瞬间、某一时刻、我们解决问题时才发现原来这些底层都是C++实现,看着那编码风格:整齐划一、逻辑严谨、没有一句废话的代码,我们就知道其实它一直就陪伴在我们的身边。

它或许不像Java、Python那么的高调与时尚,它也或许没有特别炫酷的功能,也没有那么容易去学习,但是它从不抱怨,因为它的实力毋庸置疑!!!!


所有入坑的选手有一个精彩的人生!!!

坑多,可以逼着你不断学习
特性多,可以逼着你不断学习
多编程泛型支持,可以逼着你不断学习
好处就是,不断学习,哪里有时间去学习其他,

想专一就选C++!!!

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章