WEB领域是不是黄了还是没黄
进入2024年后,WEB领域大批老表失业,一片哀嚎,个个饿的鬼叫狼嚎,为啥呢,下面是我个人的见解和看法。
中国程序员在应用层的集中
-
市场需求:中国的互联网行业在过去几年中经历了爆炸性增长,尤其是在电子商务、社交网络、移动支付等领域。这些领域的快速发展催生了大量对应用层开发的需求,因此许多中国程序员专注于使用现成的框架和技术来快速构建应用程序。
-
企业需求:许多中国企业更注重短期收益和市场占有率,因此更加倾向于快速迭代产品和服务,而不是投入大量资源进行底层技术的研发。这导致了很多程序员的工作集中在业务逻辑实现上,即CRUD操作。
-
教育和培训:中国的高等教育和职业培训机构往往更侧重于教授实用技能,以便学生能够迅速就业。这种倾向可能导致更多人学习如何使用现有工具和框架,而不是深入研究底层原理。
国外程序员的优势
-
历史积累:许多基础技术和框架起源于国外,特别是美国和欧洲。这些国家和地区在计算机科学和软件工程领域有着悠久的历史,积累了大量的经验和知识。
-
开源文化:西方国家拥有浓厚的开源文化,许多优秀的开源项目都是由国外开发者发起并维护的。这种文化鼓励技术创新和共享,使得国外程序员更容易参与到核心技术的开发中。
-
国际化视野:英语作为国际通用语言,为国外程序员提供了更多的交流机会和获取最新信息的途径。他们可以更方便地参与国际会议、阅读英文文档和教程,从而保持在技术前沿。
-
资金支持:一些大型科技公司如Google、Microsoft、Oracle等,在技术研发上有巨大的投入。这些公司在推动技术进步的同时,也为程序员提供了良好的工作环境和发展平台。
英语的优势
-
国际交流:英语是国际科技会议、论坛和开源社区的主要交流语言。掌握英语可以帮助程序员更好地参与这些活动,从而获取最新的技术和行业动态。
-
文档与资源:很多高质量的技术文档、教程和在线课程都是英文的。能够无障碍阅读这些资料有助于程序员更快地学习新技术。
-
全球就业机会:对于那些希望在全球范围内寻找工作机会的程序员来说,良好的英语能力可以打开更多大门。
国内程序员和国外程序员面对的环境问题
-
劳动力市场结构:在一些发达国家,如美国,IT行业的发展更为成熟,企业对于技术人才的需求稳定且持续增长。同时,这些国家的教育体系和职业培训机制往往能够较好地与市场需求对接,培养出符合行业需求的人才。
-
法律法规保护:西方国家通常有更完善的劳动法律体系来保护员工权益,比如解雇程序较为复杂,需要给出正当理由,并提供相应的补偿。这使得企业在裁员时会更加谨慎。
-
社会保障体系:很多西方国家拥有完善的社会保障网络,包括失业保险、再就业培训等服务,为失业人员提供了更多的缓冲和支持,帮助他们更快地重返工作岗位。
-
工会力量:在某些国家,工会的力量较强,可以代表员工与雇主谈判,确保员工获得更好的工作条件和待遇,同时也减少了无故解雇的情况。
-
企业文化差异:西方国家的企业文化可能更注重员工的工作生活平衡,较少出现长时间加班的现象,这样的环境有助于保持员工的工作热情和创造力,从而减少因过度劳累导致的职业倦怠或离职。
-
技能更新和终身学习:在一些发达国家,企业和政府都鼓励并支持员工进行持续的学习和个人发展,以便适应不断变化的技术环境。这种对个人成长的投资可以帮助程序员保持竞争力,降低失业风险。
-
国际化视野:由于英语作为国际通用语言的优势,西方国家的程序员更容易参与全球项目,接触到国际市场的机会也更多,这增加了他们的就业机会。
-
创新和技术领先地位:一些发达国家在技术创新方面处于领先地位,这意味着它们有更多的高薪岗位和高级职位,这些职位往往更能抵御经济波动的影响。
-
经济稳定性:虽然全球经济都有周期性的波动,但是一些发达国家的经济相对稳定,即使在经济不景气的时候,也能通过各种政策措施来缓解失业问题。


国内大批程序员高度集中在应用层居多,在应用层框架和语法使用者居多,加上环境的影响往往比较重视快,加班,而专研做底层的往往很少,比如一个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 processesfor (i = 0; i < 3; i++) {inherit.flags = 0;if ((pid = spawn("child", 0, NULL, &inherit, args, environ)) == -1)perror("spawn() failed");elseprintf("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 valuesmemset(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 itjson_decoder_destroy(dec);// If everything above has succeeded, json_decoder_get_status() will return// JSON_DECODER_OKif ( 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++项目积累经验,才有可能有机会做上面列举的商业软件,也才有能力去参与老外的开源项目,也才有更多的可能和机会。


欢迎友善讨论和评论。
相关文章:
WEB领域是不是黄了还是没黄
进入2024年后,WEB领域大批老表失业,一片哀嚎,个个饿的鬼叫狼嚎,为啥呢,下面是我个人的见解和看法。 中国程序员在应用层的集中 市场需求:中国的互联网行业在过去几年中经历了爆炸性增长,尤其是…...
Android系统:系统架构
文章目录 分层设计分块设计总结 分层设计 自上而下分为:应用层、应用架构层、系统运行层、硬件抽象层、Linux内核层 应用层 封装一系列系统App 应用架构层(Framework) 封装一系列运行App需要的Java框架 提供App开发需要的API 系统运行层(Libraries) 封装一系…...
NCNN 源码(1)-模型加载-数据预处理-模型推理
参考 ncnn 第一个版本的代码。 0 整体流程 demo:squeezenet ncnn 自带的一个经典 demo:squeezenet 的代码: // 网络加载 ncnn::Net squeezenet; squeezenet.load_param("squeezenet_v1.1.param"); squeezenet.load_model("squeezenet_…...
重修设计模式-结构型-享元模式
重修设计模式-结构型-享元模式 复用不可变对象,节省内存 享元模式(Flyweight Pattern)核心思想是通过共享对象方式,达到节省内存和提高性能的目的。享元对象需是不可变对象,因为它会被多处代码共享使用,要避…...
JavaScript 运算符
JavaScript 中的运算符可以根据其功能和用途分为几类。以下是主要的运算符类型及其用法: 1. 算术运算符 用于执行基本的数学运算。 : 加法 let sum 5 3; // 8- : 减法 let difference 5 - 3; // 2* : 乘法 let product 5 * 3; // 15/ : 除法 let quotient 5…...
3.js - 运动曲线
这个球,绕着这个红色的线圈转 代码 import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControlslet scene,camera,renderer,controls nulllet moon,earth null// 根据,一系列的点,创建曲线 le…...
免费ppt模板哪里找?职场必备这些利器
一眨眼,9月份的尾声渐近,无论是学生还是职场人士,都开始准备着新一轮的演讲和报告。在这个忙碌的时期,一份精美的PPT模板能够大幅提升你的工作效率,让你的演示更加引人入胜。 不用担心高昂的版权费用,市场…...
wampserve 配置本地域名,出现错误
概述 今天更换了电脑,在本地安装和配置docker的时候,想用自定义域名访问NGINX容器,127.0.0.1和localhost都可以访问,但是自定义域名无法访问, 接着去捯饬已经使用的wampserver的集成环境,出现了同样的问题…...
MySQL慢查询优化指南
博客主页: 南来_北往 系列专栏:Spring Boot实战 前言 当遇到慢查询问题时,不仅影响服务效率,还可能成为系统瓶颈。作为一位软件工程师,掌握MySQL慢查询优化技巧至关重要。今天,我们就来一场“数据库加速之旅…...
怎么录制游戏视频?精选5款游戏录屏软件
对于热爱游戏的你来说,记录游戏中的精彩瞬间并分享给朋友或粉丝,无疑是一种享受。然而,在众多录屏软件中,如何选择最适合你的那一款?今天,我们就为大家精选了五款游戏录屏软件,需要的朋友快来选…...
论文阅读 - MDFEND: Multi-domain Fake News Detection
https://arxiv.org/pdf/2201.00987 目录 ABSTRACT INTRODUCTION 2 RELATED WORK 3 WEIBO21: A NEW DATASET FOR MFND 3.1 Data Collection 3.2 Domain Annotation 4 MDFEND: MULTI-DOMAIN FAKE NEWS DETECTION MODEL 4.1 Representation Extraction 4.2 Domain Gate 4.…...
LabVIEW软件出现Bug如何解决
在LabVIEW开发中,程序出现bug是不可避免的。无论是小型项目还是复杂系统,调试与修复bug都是开发过程中的重要环节。下文介绍如何有效解决LabVIEW软件中的bug,包括常见错误类型、调试工具、错误处理机制。 1. 常见Bug类型分析 在LabVIEW中&am…...
【数据结构-栈】力扣844. 比较含退格的字符串
给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。 注意:如果对空文本输入退格字符,文本继续为空。 示例 1: 输入:s “ab#c”, t “…...
DataFrame生成excel后为什么多了一行数字
问题描述 python查询数据生成excel文件,生成的excel多了第一行数字索引,1,2,3,4,5...... 代码: df pd.DataFrame(data)df.to_excel(filename, sheet_name用户信息表, indexFalse) 解决: 原理也很简单,就是设置个参…...
linux 内存屏障(barrier)分析
谈起内存屏障,大家感觉这个"玩意儿"很虚,不太实际,但是内核代码中又广泛地可以看到起身影。内存屏障,英文barrier,这个"玩意儿"它还不太好去定义它。barrier,中文翻译为栅栏,栅栏大家都见过,现实生活中就是防止他人或者动物非法闯入而用来进行隔…...
【人工智能】Transformers之Pipeline(十九):文生文(text2text-generation)
目录 一、引言 二、文生文(text2text-generation) 2.1 概述 2.2 Flan-T5: One Model for ALL Tasks 2.3 pipeline参数 2.3.1 pipeline对象实例化参数 2.3.2 pipeline对象使用参数 2.3.3 pipeline返回参数 …...
如何使用ssm实现基于VUE的儿童教育网站的设计与实现+vue
TOC ssm676基于VUE的儿童教育网站的设计与实现vue 第一章 课题背景及研究内容 1.1 课题背景 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全…...
MODBUS TCP 转 CANOpen
产品概述 SG-TCP-COE-210 网关可以实现将 CANOpen 接口设备连接到 MODBUS TCP 网络中。用户不需要了解具体的 CANOpen 和 Modbus TCP 协议即可实现将CANOpen 设备挂载到 MODBUS TCP 接口的 PLC 上,并和 CANOpen 设备进行数据交互。 产品特点 …...
vue2+elementUI实现handleSelectionChange批量删除-前后端
功能需求:实现选中一个或多个执行批量删除操作 在elementUI官网选择一个表格样式模板,Element - The worlds most popular Vue UI framework 这里采用的是 将代码复制到前端,这里是index.vue <template><el-button type"dang…...
LLMs之OCR:llm_aided_ocr(基于LLM辅助的OCR项目)的简介、安装和使用方法、案例应用之详细攻略
LLMs之OCR:llm_aided_ocr(基于LLM辅助的OCR项目)的简介、安装和使用方法、案例应用之详细攻略 目录 llm_aided_ocr的简介 1、特性 2、详细技术概览 PDF处理和OCR PDF到图像转换 OCR处理 文本处理流程 分块创建 错误校正与格式化 重复内容移除 标题和页码…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
用递归算法解锁「子集」问题 —— LeetCode 78题解析
文章目录 一、题目介绍二、递归思路详解:从决策树开始理解三、解法一:二叉决策树 DFS四、解法二:组合式回溯写法(推荐)五、解法对比 递归算法是编程中一种非常强大且常见的思想,它能够优雅地解决很多复杂的…...
比特币:固若金汤的数字堡垒与它的四道防线
第一道防线:机密信函——无法破解的哈希加密 将每一笔比特币交易比作一封在堡垒内部传递的机密信函。 解释“哈希”(Hashing)就是一种军事级的加密术(SHA-256),能将信函内容(交易细节…...
基于Python的气象数据分析及可视化研究
目录 一.🦁前言二.🦁开源代码与组件使用情况说明三.🦁核心功能1. ✅算法设计2. ✅PyEcharts库3. ✅Flask框架4. ✅爬虫5. ✅部署项目 四.🦁演示效果1. 管理员模块1.1 用户管理 2. 用户模块2.1 登录系统2.2 查看实时数据2.3 查看天…...
