刚入门学编程那会,最懵的问题就是面向对象的语言有哪些,网上乱七八糟的说法看得人头大,有人说全是主流语言,有人又区分得特别细碎,根本分不清哪些是原生支持面向对象,哪些只是勉强兼容部分特性。
最初的认知特别片面。
那时候傻傻以为,只有专门主打面向对象的编程语言才算数,照着入门教程死记硬背,脑子里只固化了Java、C++两个选项,做大学课程设计的时候,硬生生只用Java完成所有项目开发,甚至固执的觉得其他编程语言都是偏向面向过程的,碰了就会打乱自己的学习节奏。哪怕专业课老师多次建议尝试用Python做简易功能开发,也执拗的拒绝,死守着自己那点狭隘认知,白白浪费了熟悉多语言特性的机会,现在想想,真的是新手最典型的自我内耗。
后来跟着导师参与小型项目开发,才慢慢推翻之前的错误认知。Python是百分百原生支持面向对象的语言,这是实操里最直观的感受。日常写爬虫、做数据可视化、搭建简易后端接口时,所有的变量、方法、功能模块都能封装成独立的类,随意创建实例调用,完美贴合封装、继承、多态这些核心特性,不是那种半吊子适配的模式,全程开发都能依托面向对象思想简化代码,大幅提升复用率。
C#也是纯面向对象的主力语言。
之前一直把C#和C语言混为一谈,下意识觉得它继承了C语言的过程化特性,不属于面向对象范畴,直到上手做Windows桌面小程序开发,折腾好久才搞明白,C#的整套语法体系都是围绕面向对象搭建的。从基础的数据定义、方法调用,到复杂的项目框架搭建,所有功能都依托类和对象实现,不存在零散的过程化代码堆砌,很多企业级桌面软件、Unity游戏开发,核心都是靠C#成熟的面向对象能力支撑的,实用性极强。
还有多数新手容易误解的JavaScript,其实也是完整支持面向对象的脚本语言。最开始写前端代码,只会用它写简单的按钮交互、页面动态效果,全程用过程化写法,就片面判定它不具备面向对象能力。直到深入学习前端框架开发,才发现ES6及后续版本完善了类语法体系,对象继承、组件封装、多态重写这些功能全都能实现,现在主流的Vue、React框架,底层开发逻辑都离不开JS的面向对象特性。
Ruby、PHP这类偏向轻量化开发的语言,同样具备成熟的面向对象机制。身边做小众后端开发的朋友,常年用Ruby搭建轻量化网站和接口,全程依托面向对象思想编码,代码结构清晰、维护成本极低,只是这类语言深耕细分场景,普及度不如Java、Python,所以大部分入门者都不了解。
市面上还有Swift、Kotlin这些移动端专属语言,也都是原生面向对象的,专门适配安卓和苹果端开发,针对性极强。
熬了两晚整理完所有适配语言的实操特性后,合上笔记本电脑,指尖还停留在发烫的键盘上,脑子里只剩之前盲目排他的可笑。