Mac 和 Win,到底用哪个系统学编程?

news2024/11/28 6:34:11

今天来聊一个老生常谈的问题,学编程时到底选择什么操作系统?Mac、Windows,还是别的什么。。

作为一个每种操作系统都用过很多年的程序员,我会结合我自己的经历来给大家一些参考和建议。

接下来先分别聊聊每种操作系统的优点和不足吧。

Windows

先说下国内用户最多的操作系统 Windows。我第一次接触 Windows 还是在小学一年级,也算是用了近 20 年的 Windows 吧。一直到大三进入企业实习前,我都是 Windows 的忠实用户。

当然了,大学前用 Windows 最主要做的事情不是学编程,而是打游戏。GTA、DNF、守望先锋,叫的上名字的游戏我基本都玩过,曾经也想过去开游戏直播哈哈。

所以在我看来,Windows 相对于其他操作系统的最大优势就是在于能用它来玩游戏!

换句话说,其实 Windows 的软件生态非常丰富,无论是游戏、办公、甚至是看片儿,Windows 总有那么几款软件符合你的诉求,而且即使到了 2023 年,有些软件还是只有 Windows 版本的,比如我开直播用的软件,毕竟用户基数大嘛。

而且在 Windows 上使用软件、或者强制使用原本不能用的软件也是相对方便的,对于学生党来说,能节约很多时间和金钱成本。

此外,Windows 还有一些其他优点,比如:

比如。

比如。。。

好,接下来说一下 Windows 的缺点,就用我从小到大的翻车事迹来说明吧:

姓名:李鱼皮

 

事迹:

  1. 小学三年级时因为下载了一个盗版游戏,导致电脑上安装了多个不知名浏览器

  2. 小学六年级时,玩 DNF 爆了人生第一把史诗装备,缺由于系统蓝屏没有捡到

  3. 初中时,因为装了一款快速播放器给电脑引入了大量病毒,QQ 号也被盗了

  4. 大二时写过一篇长达上万字的实验报告,因为系统死机导致报告全部丢失(所以之后我练成了 ctrl + s 机械手)

相信大家也有过类似的经历吧,我用 Windows 最直观的感受就是它不够安全、不够稳定。盗版软件多、一不留神电脑就中毒了;电脑配置再高,还是不可避免地出现死机,丢了数据真的心态爆炸啊!

此外,Windows 经常搞升级,而且每次升级的版本改动非常大!经常出现软件兼容性问题。比如前段时间我下载了某个怀旧游戏,结果发现只有 win7 才能运行。

对于学编程的同学来说,Windows 还有 2 个问题。

首先就是安装编程相关的环境比较麻烦,刚开始装个 Python、Java 啥的可能还好,等之后你要装 Docker、消息队列、跑一些知名开源项目的时候,就知道有多麻烦了。虽然在 Windows 上可以使用 WSL(Linux 子系统)或者第三方虚拟机来辅助搭建编程环境,那也不如天然支持的要香对吧。

还有就是 Windows 的可定制性比较差,系统对用户不透明。绝大多数同学只是用它来办公还感受不到这点,但在你后面编程搭环境、尤其是学习一些系统安全知识的时候就会发现,很多时候你要修改系统设置时,很难找到对应的入口,或者就是必须反复重启电脑才能修改成功。

综上,个人感觉 Windows 更适合家用娱乐和办公。

Mac OS

我是从大三在字节跳动实习的时候,第一次接触到 Mac OS 系统。

作为一个十几年 Windows 忠实用户,我刚开始用 Mac 是非常非常不习惯的,无论是界面、快捷键还是终端。所以就是白天工作用 Mac,下班就换成自己的华为 Windows 笔记本。

记得我当时有个同事,他就疯狂给我安利 Mac 怎么怎么好用、怎么怎么高效。我当时还心想:哼,哥们用 Windows 效率也贼高好吧。

但没想到,用了半年之后,我就 “真香” 了,从大四开始,我基本上就把 Mac 作为自己的主力机了,而且公司的同事也几乎是清一色的 Mac。

先说说我感受到的 Mac OS 的优点吧,首先就是我用了 Mac 几年了,几乎没有发生过死机(也死机过,但屈指可数),明显比 Win 的稳定性高

Mac 上安装软件也非常方便,就跟我们手机上装软件一样,Mac 有自己的正版的应用商店,安装软件更高效、软件更好管理、也更安全

而且个人感觉 Mac OS 的界面也更好看大气,当然,这个也可能和 Mac 电脑本身的屏幕和设计有关。所以做前端开发和设计的同学用 Mac 的体验会更好一些。

此外,如果你是一个苹果控,那么你还能感受到 Mac 生态系统的强大,各设备间同步数据真的非常方便。

对学编程的同学来说,Mac OS 最大的亮点莫过于它是基于 UNIX 操作系统的,自带了很多开发工具和终端,而且终端的很多命令和企业开发常用的 Linux 系统类似,便于我们搭建环境和学习命令行的使用:

此外,苹果电脑近几年的发展真的是太迅猛了,芯片从 M1 到 M2 的跃进,带来的是更丝滑的系统使用和编程开发体验。同等配置(比如 16 G)下,开发的流畅度和开发软件打开的速度都比 Windows 要快很多,也基本没出现过软件卡死。

而 Mac OS 也是存在缺点的,首先就是对于我这种白票党来说,我发现 Mac 上的很多软件不能让我自由地去使用;而且 Mac 目前的软件数还是没法跟 Windows 比的,很多 Windows 上好用的软件在 Mac 上没有相应的替代品(比如我常用的直播软件)。所以用了 Mac 后,很多游戏基本就不能自由地去玩了(对卷王来说,这也许也是它的一个优点?)

当然,Mac 电脑还有一个最大的问题,就是它的价格还是相对贵了一些。

Linux

除了 Windows 和 Mac 这两种面向大众用户的操作系统外,对绝大多数程序员来说,Linux 系统是必须要会使用的!因为目前绝大多数企业内的项目都是部署在 Linux 服务器上的。

为什么呢?

因为 Linux 系统是开源的,更安全;而且它是可定制的,可以根据业务场景和项目的实际情况打造出性能更高、成本更低、稳定性更高的系统。

但是,必须要学 Linux 不意味着我们要有一台安装 Linux 系统的电脑,更不意味着我们要把自己的 Windows 电脑重装为 Linux 系统,从而去使用 Linux 的界面。像我大学的时候折腾过自己的微软 Surface 电脑,给它装了个 Ubuntu kylin 和 Linux Mint 操作系统,感觉也并没有想象中的好用。

其实绝大多数情况下,我们只需要花几十块钱租一个云服务器或者在本地搭个虚拟机,通过 XShell、SecureCRT 之类的工具连接上它,就足够学习和部署项目了。相信很多同学的个人博客,也是像我一样搭在了 Linux 云服务器上。

如果你是学习 C++ 开发或网络安全方向的同学,要对 Linux 掌握得更多一些。Java 后端或者前端开发同学会用 Linux 部署项目、学学常用命令基本上就够了。

如何选择?

那说了那么多,大家到底用哪个操作系统来学编程呢?

这个问题当然没有标准答案,要根据你当前所处的环境、你的使用习惯和预算综合选择。

先说环境。比如你现在是个大学生,学校的老师都用 Windows 讲课,给的软件包资源也都是 Windows 的,那么使用 Windows 系统无疑可以降低你入门的成本;而当你进了公司后,如果身边的同事都用 Mac 或 Win,那你最好和他们保持一致,搭环境、传软件和代码包、甚至是别人来帮你改 Bug 都会更方便一些,可以快速上手项目。

然后是习惯。其实学编程的时候(尤其是初期),我们保持自己之前的习惯就好了。比如你之前用 Windows,那就用它学编程,怎么快怎么来。不用再去换电脑熟悉新的快捷键、或者非要自己安装个 Linux 系统之类的。你的时间足够,想怎么折腾怎么折腾。但是我更建议初学者把重心放在学习基础上。

此外,千万别纠结说必须得有个什么操作系统才能学编程,或者学到某个程度就必须要换电脑。

目前绝大多数开发工具和软件的风格在任何系统上基本都是统一的,比如 VS Code、JetBrains 全家桶等等,基本不会出现没有某个操作系统就不能学的情况(开发 Mac 应用除外)。而且哪怕你要使用其他的系统,可以搞云主机、或者用 VM Ware、Parallels Desktop 之类的虚拟机软件,在自己的主电脑上运行别的系统。

那我自己目前主要是使用 Mac 来开发、用 Windows 来开直播、用 Linux 云服务器来部署项目等,相信大家肯定也有自己的选择,欢迎评论区交流分享~

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/741995.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

React懒加载/动态加载lazy简单实例

两种页面嵌套的方式,一种是父子组件,一种是懒加载 1、父子组件(可略,只用来做例子对比) 原本需要用父子组件来实现页面嵌套,如果嵌套的组件不多,可以这样实现 父页面 import React,{Componen…

Android代码解读之渲染机制揭秘

问题 1.vsync如何协调应用和SurfaceFlinger配合来完成UI渲染、显示,App接收vsync后要做哪些工作? 2.requestLayout和invalidate区别? 3.performTraversals到底是干什么了? 4.surfaceflinger怎么分发vsync信号的? …

【Java】继承背后那些事---深扒继承基本原理|类加载、子类对象创建、方法调用、变量访问

博主简介:努力学习的预备程序媛一枚~博主主页: 是瑶瑶子啦所属专栏: Java岛冒险记【从小白到大佬之路】 学习了继承、多态 本节,将通过一个简单的例子,从概念上介绍原理(实际实现的细节与此有所差别)&#…

HuggingGPT解析:使用 ChatGPT及HuggingFace上的族系解决AI问题

HuggingGPT解析:使用 ChatGPT及HuggingFace上的族系解决AI问题 HuggingGPT是一个利用大型语言模型(LLMs)来解决复杂AI任务的框架。其基本理念是,考虑到LLMs(例如ChatGPT)在语言理解、生成、交互和推理方面展现出了卓越的能力&…

一个优质软件测试工程师简历的范文(答应我一定要收藏起来)

很多刚转行软件测试的小伙伴是不是不知道怎么写好一份优质的软件测试工程师的简历。今天呢,就给大家分享一下一个优质软件测试工程师简历的范文。记得收藏起来哦。 下面的案例:2-3年的软件测试工程的简历 姓 名:XXX 学历:本科 …

源码解析Collections.sort ——从一个逃过单测的 bug 说起

源码解析Collections.sort ——从一个逃过单测的 bug 说起 本文从一个小明写的bug 开始,讲bug的发现、排查定位,并由此展开对涉及的算法进行图解分析和源码分析。 事情挺曲折的,因为小明的代码是有单测的,让小明更加笃定自己写的…

第四节 配置SpringBootAdmin日志管理

本来想用一节就写完SpringBootAdmin的,但随着研究的深入发现一节应该是不够的,网上的资料也不会非常系统,官网的例子有些已经好几年没更新了,所以接下来还是系统性的来写下吧 第一节 完成基础配置,暴露所有端点 第二节…

uniapp App强制更新

需要使用DClound插件市场的一个插件挺好用的!app升级、整包更新和热更新组件 支持vue3 支持打开安卓、苹果应用市场,wgt静默更新https://ext.dcloud.net.cn/plugin?id7286 开始贴代码 // /utils/method.js/*** 获取当前app最新版本* param number ver…

【JAVA】这几个JAVA学习网站你绝不能错过(教学课程篇)

个人主页:【😊许思王】 文章目录 前言HOW2J.CNw3cschool菜鸟教程慕课网开课吧黑马程序员B站 前言 JAVA很难学?学不会怎么办?找对学习网站,让你轻松解决困难。 HOW2J.CN HOW2J.CN是我自认为最好的JAVA学习网站&#x…

df -h 查看Used+Avail != Size

问题描述: 在测试过程中发现,该机器的根目录空间 41G 5.7G ! 50G,即 Used Avail ! Size 问题原因: 经过搜索,了解到这种情况可能是Linux系统默认的文件保留块导致的(Linux系统默认保留5%的容量作为应急…

论文 | 一分钟快速找到自己研究领域的顶刊

1. 打开Web of Science https://www.webofscience.com/wos/alldb/basic-search 2. 点击右上角:产品,再选中:Journal Citation Reports 至于JCR是什么,请看下面的拓展部分 3. 单击顶部的 Categories Categories 是分类、类别的…

LaTeX 速查手册

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…

MachineLearningWu_11_NeuralNetworkLayer

x.1 Neural Network layer design 我们接下来来讲解一下深度学习中,神经网络是如何架构的。对于一个具有两层的的神经网络,我们将输入层置为layer0,将第一层隐藏层置为layer1,将 w 2 [ 1 ] w_2^{[1]} w2[1]​标记为第一层中&…

nginx基本使用

这是一份完整的nginx配置文件: #user nobody; worker_processes 1;#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 1024; }http {include mi…

23款奔驰GLS450更换迈巴赫GLS600外观套件,尽显奢华

在外观上不要过分的张扬,低调的同时还要彰显强大的气场,换装迈巴赫专属套件,迈巴赫专属踏板,还有迈巴赫的醒目M标志,车身轮廓和线条方面,奔驰GLS450和迈巴赫GLS600尺寸及其契合,只需通过增加一些…

LayUi基础入门【附有案例从0到1详解】

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于LayUi的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.LayUi的创作背景 二.LayUi是什么 三.…

请收藏!2023年全栈开发人员实战进阶指南终极版

全栈工程师在过去十年中越来越受到欢迎,而且在国内的就业环境下,它是更适合从技术转管理的职位。 但究竟什么是全栈工程师?他需要哪些技术能力?如何才能成为一名优秀的全栈工程师?今天这篇文章就给大家全方位分享一下…

ES6基础语法

目录 解构 数组解构 对象解构 基本数据解构 对象 对象简写 箭头函数 扩展运算符 函数参数解构 对象API拓展 Object.is() Object.assign() Object.getPrototypeOf() Object.setPrototypeOf() Object.keys() Object.values() Object.entries() Object.fromEntries()…

Java --- 云尚优选项目

目录 一、项目工程搭建 二、配置项目相关maven依赖 2.1、cjc.ssyx父工程依赖 2.2、common模块pom依赖 2.3、common-util模块pom依赖 2.4、service-util模块pom依赖 2.5、model模块pom依赖 2.6、service模块pom依赖 三、编写相关工具类 3.1、mybatis-plus分页查询配置…

SpringMVC学习笔记一

目录 一、SpringMVC概述二、入门案例1.导入相关依赖2.配置web.xml3.配置SpringMVC4.创建测试用的html页面5.编写Controller 三、请求映射规则RequestMapping1.RequestMapping注解标识的位置2.RequestMapping注解value属性3.RequestMapping注解的method属性4.RequestMapping注解…