WEB领域是不是黄了还是没黄

进入2024年后,WEB领域大批老表失业,一片哀嚎,个个饿的鬼叫狼嚎,为啥呢,下面是我个人的见解和看法。

中国程序员在应用层的集中

  1. 市场需求:中国的互联网行业在过去几年中经历了爆炸性增长,尤其是在电子商务、社交网络、移动支付等领域。这些领域的快速发展催生了大量对应用层开发的需求,因此许多中国程序员专注于使用现成的框架和技术来快速构建应用程序。

  2. 企业需求:许多中国企业更注重短期收益和市场占有率,因此更加倾向于快速迭代产品和服务,而不是投入大量资源进行底层技术的研发。这导致了很多程序员的工作集中在业务逻辑实现上,即CRUD操作。

  3. 教育和培训:中国的高等教育和职业培训机构往往更侧重于教授实用技能,以便学生能够迅速就业。这种倾向可能导致更多人学习如何使用现有工具和框架,而不是深入研究底层原理。

国外程序员的优势

  1. 历史积累:许多基础技术和框架起源于国外,特别是美国和欧洲。这些国家和地区在计算机科学和软件工程领域有着悠久的历史,积累了大量的经验和知识。

  2. 开源文化:西方国家拥有浓厚的开源文化,许多优秀的开源项目都是由国外开发者发起并维护的。这种文化鼓励技术创新和共享,使得国外程序员更容易参与到核心技术的开发中。

  3. 国际化视野:英语作为国际通用语言,为国外程序员提供了更多的交流机会和获取最新信息的途径。他们可以更方便地参与国际会议、阅读英文文档和教程,从而保持在技术前沿。

  4. 资金支持:一些大型科技公司如Google、Microsoft、Oracle等,在技术研发上有巨大的投入。这些公司在推动技术进步的同时,也为程序员提供了良好的工作环境和发展平台。

    英语的优势

  5. 国际交流:英语是国际科技会议、论坛和开源社区的主要交流语言。掌握英语可以帮助程序员更好地参与这些活动,从而获取最新的技术和行业动态。

  6. 文档与资源:很多高质量的技术文档、教程和在线课程都是英文的。能够无障碍阅读这些资料有助于程序员更快地学习新技术。

  7. 全球就业机会:对于那些希望在全球范围内寻找工作机会的程序员来说,良好的英语能力可以打开更多大门。

国内程序员和国外程序员面对的环境问题

  1. 劳动力市场结构:在一些发达国家,如美国,IT行业的发展更为成熟,企业对于技术人才的需求稳定且持续增长。同时,这些国家的教育体系和职业培训机制往往能够较好地与市场需求对接,培养出符合行业需求的人才。

  2. 法律法规保护:西方国家通常有更完善的劳动法律体系来保护员工权益,比如解雇程序较为复杂,需要给出正当理由,并提供相应的补偿。这使得企业在裁员时会更加谨慎。

  3. 社会保障体系:很多西方国家拥有完善的社会保障网络,包括失业保险、再就业培训等服务,为失业人员提供了更多的缓冲和支持,帮助他们更快地重返工作岗位。

  4. 工会力量:在某些国家,工会的力量较强,可以代表员工与雇主谈判,确保员工获得更好的工作条件和待遇,同时也减少了无故解雇的情况。

  5. 企业文化差异:西方国家的企业文化可能更注重员工的工作生活平衡,较少出现长时间加班的现象,这样的环境有助于保持员工的工作热情和创造力,从而减少因过度劳累导致的职业倦怠或离职。

  6. 技能更新和终身学习:在一些发达国家,企业和政府都鼓励并支持员工进行持续的学习和个人发展,以便适应不断变化的技术环境。这种对个人成长的投资可以帮助程序员保持竞争力,降低失业风险。

  7. 国际化视野:由于英语作为国际通用语言的优势,西方国家的程序员更容易参与全球项目,接触到国际市场的机会也更多,这增加了他们的就业机会。

  8. 创新和技术领先地位:一些发达国家在技术创新方面处于领先地位,这意味着它们有更多的高薪岗位和高级职位,这些职位往往更能抵御经济波动的影响。

  9. 经济稳定性:虽然全球经济都有周期性的波动,但是一些发达国家的经济相对稳定,即使在经济不景气的时候,也能通过各种政策措施来缓解失业问题。

图片

图片

国内大批程序员高度集中在应用层居多,在应用层框架和语法使用者居多,加上环境的影响往往比较重视快,加班,而专研做底层的往往很少,比如一个JAVA开发,springboot ,idea intellij ,open jdk,oracle jdk都是老外在占据并且主导整个全球市场,面对全球用户,而国内的java表们往往是应用层多,还受环境污染,觉得JAVA牛逼=我牛逼的思想腐蚀,PHP垃圾=他也垃圾的影响,相反参与研发open jdk,idea,spring全家桶的JAVA程序员很少,在这种环境下经济波动一影响,往往饿饭,跟我一样捡垃圾过日子。

而国外程序员往往深耕某领域比较深入,也都是几十年的经验,就算只玩应用层框架,也都无的风声水起,比如php。

图片

图片

还获得了几千万支持。

图片

他们的土壤和环境要比国内好很多,在国内PHP早就啥也不是了,但国外人家就玩的一套一套的。

同时国外的商业软件环境也非常好,这些商业软件都需要数学,物理,化学,电力,通信,机械,电子,化工等等专业知识来实现的商业软件,下面看看吧,下以商业软件大部分都是来源于加拿大公司的商业软件,其中国内不少大型单位还是他们公司的客户购买他们的商业软件和服务。

电力实时仿真系统

图片

https://www.opal-rt.com/zh-hans/software-rt-lab/

数字仿真器

图片

图片

https://www.opal-rt.com/zh-hans/systems-hypersim/

图片

图片

这家公司的客户

图片

这家公司的产品

图片

领先的电力系统分析工具

图片

https://www.dsatools.com/

这家公司的客户:浙江大学,太原理工大学,中国易核电力工程有限公司

https://www.dsatools.com/news/

图片

图片

https://www.dsatools.com/partners/

电磁设备提供设计和建模软件

https://www.infologicdesign.co.uk/

图片

图片

Maple数学软件

图片

图片

图片

https://cn.maplesoft.com/products/Maple/features/

图片

图片

图片

图片

图片

图片

图片

图片

全球强大的电影特效软件产品

https://www.sidefx.com/tutorials/

图片

https://www.meetup.com/pro/houdini/

他们公司的招聘

图片

https://www.sidefx.com/careers/

土木、采矿和岩土工程2D 3D 软件

https://www.rocscience.com/software

图片

图片

图片

图片

防真软件

图片

图片

图片

https://www.simscale.com/

世界领先的接地,雷击和电磁干扰分析技术

https://www.sestech.com/zh/Home/About

图片

他们公司的客户

图片

图片

图片

图片

图片

图片

https://www.sestech.com/zh/Training/CertifiedUsersList

图片

QNX系统

https://blackberry.qnx.com/en/industries/industrial-control

图片

QNX的应用范围极广,包含了:控制保时捷跑车的音乐和媒体功能、福特汽车的SYNC 3车载系统、核电站和美国陆军无人驾驶Crusher坦克的控制系统,还有BlackBerry PlayBook和操作系统。[2]

图片

此系统的应用领域

图片

BlackBerry QNX® 是值得信赖的商用操作系统、虚拟机管理程序、开发工具、支持和服务供应商,所有产品均专为全球最关键的嵌入式系统而构建。®BlackBerry QNX 可帮助客户简化开发工作,更高效地推出安全可靠的系统。我们的技术受到超过 2.35 亿辆汽车的信赖,并部署在全球各行各业的嵌入式系统中,包括航空航天和国防、汽车、商用车辆、重型机械、工业控制、医疗、铁路和机器人。BlackBerry QNX 成立于 1980 年,总部位于加拿大渥太华,并于 2010 年被 BlackBerry 收购。

此系统的客户https://blackberry.qnx.com/en/partners/blackberry-qnx-partners

图片

此系统的应用开发

https://www.qnx.com/developers/docs/8.0/com.qnx.doc.neutrino.prog/topic/process_Sample_using_wait.html

图片

/*  * waitchild.c * * This is an example of a parent process that creates some child * processes and then waits for them to terminate. The waiting is * done using wait(). When a child process terminates, the * wait() function returns.*/
#include <spawn.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/wait.h>
main(int argc, char **argv){    char                *args[] = { "child", NULL };    int                 i, status;    pid_t               pid;    struct inheritance  inherit;
    // create 3 child processes    for (i = 0; i < 3; i++) {        inherit.flags = 0;        if ((pid = spawn("child", 0, NULL, &inherit, args, environ)) == -1)            perror("spawn() failed");        else            printf("spawned child, pid = %d\n", pid);    }
    while (1) {        if ((pid = wait(&status)) == -1) {            perror("wait() failed (no more child processes?)");            exit(EXIT_FAILURE);        }        printf("a child terminated, pid = %d\n", pid);                if (WIFEXITED(status)) {            printf("child terminated normally, exit status = %d\n",                WEXITSTATUS(status));        } else if (WIFSIGNALED(status)) {            printf("child terminated abnormally by signal = %X\n",                WTERMSIG(status));        } // else see documentation for wait() for more macros    }}
#include <stdio.h>#include <stdlib.h>#include <pthread.h>
void*  function( void*  arg ){   printf( "This is thread %d\n", pthread_self() );   return( 0 );}
int main( void ){   pthread_attr_t attr;
   pthread_attr_init( &attr );   pthread_attr_setdetachstate(      &attr, PTHREAD_CREATE_DETACHED );   pthread_create( NULL, &attr, &function, NULL );
   /* Allow threads to run for 60 seconds. */   sleep( 60 );   return EXIT_SUCCESS;}
#include <stdio.h>#include <fcntl.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <stdlib.h>
char buffer[] = { "A text record to be written" };
int main( void ){    int  fd;    int  size_written;
    /* open a file for output          */    /* replace existing file if it exists */    fd = creat( "myfile.dat", S_IRUSR | S_IWUSR );
    /* write the text              */    size_written = write( fd, buffer,              sizeof( buffer ) );
    /* test for error              */    if( size_written != sizeof( buffer ) ) {        perror( "Error writing myfile.dat" );        return EXIT_FAILURE;    }
    /* close the file              */    close( fd );
    return EXIT_SUCCESS;}
#include <string.h>#include <stdio.h>#include <sys/json.h>    typedef struct {    const char *path;    int type;    long long size;} info_t;
typedef struct {    int id;    info_t info;} file_t;
bool extract_file_info(const char *str, file_t *file_info){    json_decoder_t *dec = json_decoder_create();    json_decoder_parse_json_str(dec, str);        // Pre-initialise the structure so that omitted optional fields have default values    memset(file_info, 0, sizeof(*file_info));    file_info->info.type = 1;
    // Extract data from the decoder. One can choose to check each call for success if    // it's important to report precise errors. Alternatively, as is done here, one can     // ignore intermediate errors and just check the final status.    json_decoder_push_object(dec, NULL, false);    json_decoder_get_int(dec, "id", &file_info->id, false);        json_decoder_push_object(dec, "info", false);    json_decoder_get_string(dec, "path", &file_info->info.path, false);    // The 'type' is optional. If not present, the call will fail but will not affect    // the decoder's status. We've initialized the field to the value it should have    // if not present, so it doesn't have to be there.    json_decoder_get_int(dec, "type", &file_info->info.type, true);    // The 'size' is also optional.    json_decoder_get_int_ll(dec, "size", &file_info->info.size, true);
    json_decoder_error_t status = json_decoder_get_status(dec, true);
    // While one might usually use a decoder to decode multiple strings, we just free it    json_decoder_destroy(dec);
    // If everything above has succeeded, json_decoder_get_status() will return     // JSON_DECODER_OK    if ( status != JSON_DECODER_OK ) {        printf("Data extraction failed\n");        return false;    }
    return true;}

虚拟飞机,船舶等模拟器

https://flightsim.to/(这个网站好玩)

图片

飞机及模拟器项目软件

图片

其旗舰产品 VAPS 和 VAPS XT 生成的代码已部署到全球数百架飞机上,我们的嵌入式图形软件已在全球 30 多个主要飞机项目中获得认证。

https://www.presagis.com/en/product/ua-accelerator/

图片

图片

图片

图片

限于篇幅就写这么多了,其中大家应该也看了C/C++编程语言的威力了,比如一个JAVA配套的东西open jdk,oracle jdk,spring全家桶,idea intellij等下面的东西全是欧美程序员在占据并且深耕了多年,形成了极强的技术优势和国际市场,积累了底层C/C++/ASM的经验几十年,在以英语为国际通用语言的优势加持,更容易的触达国际市场,不少公司已经成立了几十年,客户遍布全球,编译器,解释器,IDE,操作系统,芯片,指令集,商业软件,工业科技,航天飞机等全是老外在折腾,在占据主导大份额市场,对于经济波动抵御能力强,毕竟用户是整个全球市场,而国内一堆程序员全挤在小小的应用层里扎堆,只面对国内自已的用户小市场挤来挤去,还搞不过人家,失业饿肚子,跟我一样饿肚子的程序员太多了。

真要真正的搞技术,就要明白应用层目前太挤了,需求跟不上人才供给,最好往下走,先去消化阅读分析github上的大型C/C++项目积累经验,才有可能有机会做上面列举的商业软件,也才有能力去参与老外的开源项目,也才有更多的可能和机会。

图片

图片

欢迎友善讨论和评论。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RAG技术全面解析:Langchain4j如何实现智能问答的跨越式进化?

LLM 的知识仅限于其训练数据。如希望使 LLM 了解特定领域的知识或专有数据&#xff0c;可&#xff1a; 使用本节介绍的 RAG使用你的数据对 LLM 进行微调结合使用 RAG 和微调 1 啥是 RAG&#xff1f; RAG 是一种在将提示词发送给 LLM 之前&#xff0c;从你的数据中找到并注入…

Linux-DHCP服务器搭建

环境 服务端&#xff1a;192.168.85.136 客户端&#xff1a;192.168.85.138 1. DHCP工作原理 DHCP动态分配IP地址。 2. DHCP服务器安装 2.1前提准备 # systemctl disable --now firewalld // 关闭firewalld自启动 # setenforce 0 # vim /etc/selinux/config SELINU…

828华为云征文|华为云Flexus云服务器X实例 基于CentOS系统镜像快速部署Laravel开源论坛

最近公司可热闹了&#xff01;大家都在为搭建博客论坛系统忙得不可开交&#xff0c;尤其是在选服务器这件事儿上&#xff0c;那叫一个纠结。 同事 A 说&#xff1a;“咱得选个厉害的服务器&#xff0c;不然这论坛以后卡得跟蜗牛爬似的可咋办&#xff1f;” 同事 B 回应道&#…

【AcWing】【C++】模板之区间和与区间合并

最近在对程序设计算法进行复习&#xff0c;终于复习完了AcWing基础算法课的第一章&#xff0c;在此对第一章最后两个模板区间和与区间合并进行记录与分享。 区间和 题目描述与输入输出样例 题目来自于AcWing 802. 区间和。 思路 从题目描述来说&#xff0c;第一眼看来这是…

Fyne ( go跨平台GUI )中文文档-入门(一)

本文档注意参考官网(developer.fyne.io/) 编写, 只保留基本用法go代码展示为Go 1.16 及更高版本, ide为goland2021.2 这是一个系列文章&#xff1a; Fyne ( go跨平台GUI )中文文档-入门(一)-CSDN博客 Fyne ( go跨平台GUI )中文文档-Fyne总览(二)-CSDN博客 Fyne ( go跨平台GUI )…

镭射限高防外破预警装置-线路防外破可视化监控,安全尽在掌握中

镭射限高防外破预警装置-线路防外破可视化监控&#xff0c;安全尽在掌握中 在城市化浪潮的汹涌推进中&#xff0c;电力如同现代社会的生命之脉&#xff0c;其安全稳定运行直接关系到每一个人的生活质量和社会的整体发展。然而&#xff0c;随着建设的加速&#xff0c;电力设施通…

部署wordpress项目

一、先部署mariadb 二、在远程登录工具上进行登录测试&#xff0c;端口号为30117&#xff0c;用户为 root&#xff0c;密码为123 三、使用测试工具&#xff1a; [rootk8s-master aaa]# kubectl exec -it pods/cluster-test0-58689d5d5d-7c49r -- bash 四、部署wordpress [root…

论文阅读 | 基于流模型和可逆噪声层的鲁棒水印框架(AAAI 2023)

Flow-based Robust Watermarking with Invertible Noise Layer for Black-box DistortionsAAAI, 2023&#xff0c;新加坡国立大学&中国科学技术大学本论文提出一种基于流的鲁棒数字水印框架&#xff0c;该框架采用了可逆噪声层来抵御黑盒失真。 一、问题 基于深度神经网络…

【AI算法岗面试八股面经【超全整理】——NLP】

AI算法岗面试八股面经【超全整理】 概率论【AI算法岗面试八股面经【超全整理】——概率论】信息论【AI算法岗面试八股面经【超全整理】——信息论】机器学习【AI算法岗面试八股面经【超全整理】——机器学习】深度学习【AI算法岗面试八股面经【超全整理】——深度学习】NLP【A…

教师管理系统小程序+ssm论文源码调试讲解

第二章 开发工具及关键技术介绍 2.1 JAVA技术 Java主要采用CORBA技术和安全模型&#xff0c;可以在互联网应用的数据保护。它还提供了对EJB&#xff08;Enterrise JavaBeans&#xff09;的全面支持&#xff0c;java servlet AI&#xff0c;JS&#xff08;java server ages&…

Unity 热更新(HybridCLR+Addressable)-创建Addressable资源

三、创建Addressable资源 创建三个文件夹&#xff0c;放Addressable资源&#xff0c;里面对应放程序集&#xff0c;预制体以及场景 拖拽到Addressable Groups对应组中 其中文件名太长&#xff0c;带着路径&#xff0c;可以简化名字 创建一个脚本&#xff0c;对于这个脚本进行一…

vue3自定义hooks

引言 Vue3引入了组合式API&#xff0c;使得代码逻辑更自由、灵活。其中自定义Hooks能让我们将客服用的逻辑抽离成一个独立的函数&#xff0c;以实现在多个组件中复用的目的。可以简单理解成封装成一个模块&#xff0c;以方便其他地方调用。 实现 自定义hooks useDog impor…

杰发科技——Eclipse环境安装

文件已传到网盘&#xff1a; 1. 安装文件准备 2. 安装Make 默认路径&#xff1a;C:\Program Files (x86)\GnuWin32\bin\ 不复制的话会报错 Error: Program "make" not found in PATH 3. 安装工具链 默认路径&#xff1a;C:\Program Files (x86)\Arm GNU Toolchain…

闯关leetcode——69. Sqrt(x)

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/sqrtx/description/ 内容 Given a non-negative integer x, return the square root of x rounded down to the nearest integer. The returned integer should be non-negative as well. You mu…

计算机毕业设计之:基于微信小程序的中药材科普系统(源码+文档+讲解)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

模拟实现(优先级队列)priority_queue:优先级队列、仿函数、 反向迭代器等的介绍

文章目录 前言一、优先级队列二、仿函数三、 反向迭代器总结 前言 模拟实现&#xff08;优先级队列&#xff09;priority_queue&#xff1a;优先级队列、仿函数、 反向迭代器等的介绍 一、优先级队列 优先级队列本质是一个堆&#xff0c;使用vector容器进一步改进进行实现&am…

vue使用PDF.JS踩的坑--部署到服务器上显示pdf.mjs viewer.mjs找不到资源

之前项目使用的pdf.js 是2.15.349版本&#xff0c;最近换了一个4.6.82的版本&#xff0c;在本地上浏览文件运行的好好的&#xff0c;但是发布到服务器&#xff08;IIS&#xff09;上打不开文件&#xff0c;控制台提示找不到pdf.mjs viewer.mjs。 之前使用的2.15.349pdf和viewer…

mock虚拟接口技术

一、什么是mock mock指的就是使用mock创建出来的一个虚拟的接口 二、对于测试人员而言&#xff0c;我们为什么要使用mock 当我们进行接口测试时&#xff0c;如果对应的接口还没有开发好&#xff0c;但是我们又需要用到这个接口响应的信息&#xff0c;这个时候我们就可以使用…

邮件发送高级功能详解:HTML格式、附件添加与SSL/TLS加密连接

目录 一、邮件HTML格式设置 1.1 HTML邮件的优势 1.2 HTML邮件的编写 二、添加附件 2.1 附件的重要性 2.2 添加附件的代码示例 2.3 注意事项 三、使用SSL/TLS加密连接 3.1 SSL/TLS加密的重要性 3.2 SSL/TLS加密的工作原理 3.3 在邮件发送中启用SSL/TLS 3.3.1 邮件客…

智能算法躲避拥堵,高德企业用车上线“动态选路服务”为出行提效

近日&#xff0c;高德企业用车正式上线了一项全新服务——“动态选路服务”&#xff0c;旨在基于智能算法&#xff0c;动态规避突发拥堵路线&#xff0c;为企业用车用户提供更便捷、智能的出行方案。 以技术着眼细节&#xff0c;高德企业用车在帮助企业用车用户节约出行时间和…