-
时间:2021-04-13
关键词:
晶奇网络
软件
-
截至2021年2月底,我国国内市场上监测到的APP数量为328万款,比1月增加4万款,这是连续8个月下降以来的首次回升。
其中,本土第三方应用商店APP数量为192万款,苹果商店(中国区)APP数量为136万款。2月,新增上架APP数量13万款,下架应用9万款。
数百万款APP中,总有漏网之鱼,存在侵害用户权益的行为。
据工信部网站公告,3月11日,工信部通报了136家存在侵害用户权益行为APP企业的名单。
截至目前,经第三方检测机构核查复检,尚有53款APP未按照工信部要求完成整改。各通信管理局按工信部APP整治行动部署,积极开展手机应用软件监督检查,此次浙江省通信管理局检查发现仍有7款APP未完成整改。
依据《网络安全法》和《移动智能终端应用软件预置和分发管理暂行规定》等法律和规范性文件要求,工信部组织对上述60款APP进行下架。
工信部要求,相关应用商店应在本通报发布后,立即组织对名单中应用软件进行下架处理。
具体名单如下:
时间:2021-04-07
关键词:
手机
APP
软件
-
时间:2021-04-02
关键词:
微软
苹果
字节跳动
B站
软件
-
点击关注 GPLP ,置顶公众号
财经领域专业媒体,不容错过
━━ ━━━
时间:2021-04-02
关键词:
信息技术
软通动力
软件
-
日前,财政部、海关总署、税务总局三部委发布《关于支持集成电路产业和软件产业发展进口税收政策的通知》,通知中指出自2020年7月27日至2030年12月31日期间,免征符合条件的企业进口税收。
全文如下:
财政部 海关总署 税务总局关于支持集成电路产业和软件产业发展进口税收政策的通知
财关税〔2021〕4号
各省、自治区、直辖市、计划单列市财政厅(局),新疆生产建设兵团财政局,海关总署广东分署、各直属海关,国家税务总局各省、自治区、直辖市、计划单列市税务局,财政部各地监管局,国家税务总局驻各地特派员办事处:
为贯彻落实《国务院关于印发新时期促进集成电路产业和软件产业高质量发展若干政策的通知》(国发〔2020〕8号),经国务院同意,现将有关进口税收政策通知如下:
一、对下列情形,免征进口关税:
(一)集成电路线宽小于65纳米(含,下同)的逻辑电路、存储器生产企业,以及线宽小于0.25微米的特色工艺(即模拟、数模混合、高压、射频、功率、光电集成、图像传感、微机电系统、绝缘体上硅工艺)集成电路生产企业,进口国内不能生产或性能不能满足需求的自用生产性(含研发用,下同)原材料、消耗品,净化室专用建筑材料、配套系统和集成电路生产设备(包括进口设备和国产设备)零配件。
(二)集成电路线宽小于0.5微米的化合物集成电路生产企业和先进封装测试企业,进口国内不能生产或性能不能满足需求的自用生产性原材料、消耗品。
(三)集成电路产业的关键原材料、零配件(即靶材、光刻胶、掩模版、封装载板、抛光垫、抛光液、8英寸及以上硅单晶、8英寸及以上硅片)生产企业,进口国内不能生产或性能不能满足需求的自用生产性原材料、消耗品。
(四)集成电路用光刻胶、掩模版、8英寸及以上硅片生产企业,进口国内不能生产或性能不能满足需求的净化室专用建筑材料、配套系统和生产设备(包括进口设备和国产设备)零配件。
(五)国家鼓励的重点集成电路设计企业和软件企业,以及符合本条第(一)、(二)项的企业(集成电路生产企业和先进封装测试企业)进口自用设备,及按照合同随设备进口的技术(含软件)及配套件、备件,但《国内投资项目不予免税的进口商品目录》、《外商投资项目不予免税的进口商品目录》和《进口不予免税的重大技术装备和产品目录》所列商品除外。上述进口商品不占用投资总额,相关项目不需出具项目确认书。
二、根据国内产业发展、技术进步等情况,财政部、海关总署、税务总局将会同国家发展改革委、工业和信息化部对本通知第一条中的特色工艺类型和关键原材料、零配件类型适时调整。
三、承建集成电路重大项目的企业自2020年7月27日至2030年12月31日期间进口新设备,除《国内投资项目不予免税的进口商品目录》、《外商投资项目不予免税的进口商品目录》和《进口不予免税的重大技术装备和产品目录》所列商品外,对未缴纳的税款提供海关认可的税款担保,准予在首台设备进口之后的6年(连续72个月)期限内分期缴纳进口环节增值税,6年内每年(连续12个月)依次缴纳进口环节增值税总额的0%、20%、20%、20%、20%、20%,自首台设备进口之日起已经缴纳的税款不予退还。在分期纳税期间,海关对准予分期缴纳的税款不予征收滞纳金。
四、支持集成电路产业和软件产业发展进口税收政策管理办法由财政部
、海关总署、税务总局会同国家发展改革委、工业和信息化部另行制定印发。
五、本通知自2020年7月27日至2030年12月31日实施。自2020年7月27日,至第一批免税进口企业清单印发之日后30日内,已征的应免关税税款准予退还。
六、自2021年4月1日起,《财政部关于部分集成电路生产企业进口自用生产性原材料 消耗品税收政策的通知》(财税〔2002〕136号)、《财政部关于部分集成电路生产企业进口净化室专用建筑材料等物资税收政策问题的通知》(财税〔2002〕152号)、《财政部 海关总署 国家税务总局 信息产业部关于线宽小于0.8微米(含)集成电路企业进口自用生产性原材料 消耗品享受税收优惠政策的通知》(财关税〔2004〕45号)、《财政部 发展改革委 工业和信息化部 海关总署 国家税务总局关于调整集成电路生产企业进口自用生产性原材料 消耗品免税商品清单的通知》(财关税〔2015〕46号)废止。
自2020年7月27日至2021年3月31日,既可享受本条上述4个文件相关政策又可享受本通知第一条第(一)、(二)项相关政策的免税进口企业,对同一张报关单,自主选择适用本条上述4个文件相关政策或本通知第一条第(一)、(二)项相关政策,不得累计享受税收优惠。
财政部 海关总署 税务总局2021年3月16日
END
来源:财政部网站
版权归原作者所有,如有侵权,请联系删除。
▍
推荐阅读
缺芯少货、华为跌落……2021年智能手机市场或将迎来大变化!
突发!中芯国际被移除美国金融市场
中国构建全球首个星地量子通信网!
免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!
时间:2021-03-30
关键词:
集成电路
软件
-
网站:bbs.21ic.com
二姨的外包平台越来越规范化了,很多小伙伴都希望在工作之余的空闲时间做一些外包项目。 在这里将整个设计流程和小伙伴们一起分享的,可以给论坛小伙伴们接外包项目作为参考的。
这个设备需要对工业电源的输出进行OCP,OVP,OTP检测等相关功能,并对相关测试量的信息实时显示在数码管(由于是几年前的设备,液晶比较贵,只能选择数码管的)。由于客户给出的信息比较宽泛,所以设计起来比较自由,首先完成基本参数的定义,完成原理图和PCB的设计。
一,基本参数
1.额定电压:220V 2.额定频率:50Hz 3.额定功率:20W 4.输入信号:由连接器接到相应的检测负载 CN1:电源负载1温度传感器 CN2:电源负载2温度传感器 CN3:电源负载1电流检测信号 CN4:电源负载2电流检测信号 KEY1:Stop按键 KEY2:Dec按键 KEY3:Inc按键 KEY4:Star按键 5.输出控制: SEG1:温度显示数码管 SEG2:电流显示数码管 CN5:电源负载1 PWM控制信号 CN6:电源负载2 PWM控制信号 CN7:散热风扇PWM控制信号 CN8:水冷泵PWM控制信号 led1:关断指示灯(红色) led2:电源负载1正常工作指示灯(绿色) led3:电源负载2过热指示灯(黄色) led4:电源负载1正常工作指示灯(绿色) led5:电源负载2过热指示灯(黄色)
相关的输出控制单元,比如散热风扇,水冷泵,数码显示管,都是安装在客户工业电源的外观结构上面,用线束和开发的控制板连接到一起,随后和客户定义了这些控制单元的DC电压,开始进行原理如的设,使用AD绘制。根据相关功能的需求,使用STM32F103C8可以满足需求,而且也没有overdesign,基本所有的外设都用上了。
AC-DC电源部分TNY278为电源芯片,输出DC-12V,随后选用LDO输出DC-5V。虽然12V转3V3的压差毕竟大,但经过计算3V3的耗电50mA左右,LDO芯片功耗越过400mW左右,选用TO220的插件封装,再加装散热片可以满足要求。以下是电源部分的电路图
关于layout图纸参考意义就不是很大,由于我们是小样产品,不会有EMC和安规认证方面的要求,所以画的图纸就很粗糙,就不在这里展示了,哈哈。完成了layout后,发到大家都喜欢打板的厂家-嘉立创,五天后就收到了板子,手工焊接完成,由于电源是很成熟的方案,只要元件不焊接错误,基本可以保证一次输出成功。果然测试输出电压12V,5V,3V3,一次过,没有什么问题。客户也不对纹波,动态响应性,环路稳定性有指标性的要求,只要求功能正常就可以。所以对硬件就没有过多的调试,就开始进行软件的编写。
关于软件怎么实现,这就要安装客户的要求详细实现,通过和客户多次讨论,了解到这个控制板需要实现的控制逻辑。
二,控制逻辑
以下是相关外设对软件的定义:
1. 控制芯片:STM32F103C8T6
2. 温度检测:
(1)温度传感器CN1和CN2实时检测功率负载1和功率负载2散热片的温度,通过AD采样转换后,对应R-T表计算温度,将当前较高温度显示在数码管SEG2。
(2)温度传感器CN1和CN2实时检测功率负载1和功率负载2散热片的温度。当采集温度高于设定安全温度(85℃),对应路黄色指示灯亮(led3、led5),对应路PWM输出为0,对应路绿色指示灯灭(负载2、led4),进行过热报警和保护,并将当前较高温度显示在数码管SEG2,数码管SEG2按照亮0.5秒关0.5秒的频率闪烁提示。
(3)当温度降低至安全窗口之下(55℃),取消报警状态,PWM按之前设定输出,数码管和指示灯恢复正常显示。
(4)根据CN1、CN2所检测当前温度,应在CN7、CN8输出适当PWM波,调节散热风扇和水冷泵转速,以维持功率负载1和功率负载2温度在适当范围。
3.电流输出:
(1)按KEY4,CN5、CN6按照设定电流值和“PWM-电流对应表”,输出一定占空比PWM波。
(2)定期(10ms)检测输入CN3、CN4当前电流值。当某路电流和设定电流值有偏差(超过±100mA),将提高或者减少该路(CN5、CN6)输出PWM波占空比,从而保证电源芯片输出恒定电流。
(3)按键KEY2提高功率负载1和功率负载2电流设定值,数码管SEG1以0.5s间隔闪烁显示设定电流值,CN5、CN6输出仍按照之前设定电流进行输出和反馈调节,然后按下KEY4,修改CN5、CN6 PWM输出,同时开始反馈调节。
(4)按键KEY3降低功率负载1和功率负载2电流设定值,数码管SEG1以0.5s间隔闪烁显示设定电流值,CN5、CN6输出仍按照之前设定电流进行输出和反馈调节,然后按下KEY4,修改CN5、CN6 PWM输出,同时开始反馈调节。
(5)KEY2或KEY3最后一次按键后,10秒内不按下按键KEY4,当前按键KEY2和KEY3设定无效,数码管SEG1停止闪烁,显示之前设定值。
(6)按下按键KEY1,停止CN4、CN5输出PWM波,也即无电流输出,负载1点亮,负载2、led4灭,led3、led5仍按照温度检测规则显示。
(7)关闭电流输出后,按下按键KEY4,将按照当前设定值,CN5、CN6再次输出PWM波,同时开始反馈调节。
俗话说工欲善其事必先利其器,完成了软件控制逻辑的定义,就可以具体进行软件代码的编写。
三 软件编写
使用STM32的开发工具进行代码的编写,借鉴原子哥的例程,在相关的原子哥的例程上面开发,相信很多人都有这经历,毕竟站在巨人的肩膀上面可以看得更远,哈哈;
在这个产品中,用到ADC采样,PWM调节,数码管控制,按键扫描控制等相关功能,所以以下的子函数需要用到,具体的代码就不在帖子中就一一列出来,随后会作为附件呈现出来的,
对相关子函数进行调试,实现了对应功能后。就开始Main函数的编写,调用子函数实现软件控制逻辑中要求的功能。具体代码如帖子中呈现出来的,由于当时完全是仿照例程写的,所以写的不是很规范,但是最后产品是完整跑起来了,作为送样的产品也达到了要求的,哈哈!
main函数也有些长,贴了三次完整的代码,网页都被卡死了,随便贴两端代码做个示例的,其他code只能作为附件上传的.还有相关的数码管,温度传感器的资料也附上,供有需要的小伙伴使用。
完成代码的编写,烧录进电路板后,相关功能符合要求。生产了十几套产品,送给客户展示,符合要求了。
这个产品从硬件到软件的设计都不太复杂,在学校也有足够多的时间慢慢琢磨,所以做出来的产品没有出纰漏。但这仅仅是展示样机,还不能算消费的产品,所以有差距的。这里呈现仅仅给大家做一个参考的!
本文系21ic论坛网友kk的回忆原创,资料下载请点击“阅读原文”内下载
免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!
时间:2021-03-25
关键词:
硬件
外包
软件
-
1 从电路到集成电路
1.1 电路发展变化的趋势
(1)功率。电子设备越来越省电,待机时间越来越长,工作电压越来越低。
(2)体积。体积越来越小。
(3)功能。功能越来越强大。
1.2 微器件的出现
(1)电路的核心:开关控制、倍率控制。
(2)电子管、晶体管等。
1.3 集成电路的出现
(1)IC(integrated circuit,集成电路),就是使用微器件为积木,去搭建具备一定功能的一个电路板。
(2)以前没有微器件的时候,必须很大一块电路板才能实现一个电路功能(譬如一个加法器,完成加法运算)。然后有了微器件之后,这个电路板的体积变小了,越来越小,最后小到mm级别甚至更小,我们就把这个电路做在一起,用塑料外壳封装起来就形成了大家看到的IC芯片。
(3)芯片(IC、集成电路)其实就是:里面馅是电路,外面的壳就是绝缘体壳,里面的电路通过外壳上引出来的一些引脚(金属材料的)来与IC外部接轨。
(4)IC有多少个引脚,每一个引脚的作用是干嘛的,是IC设计制造的时候就已经决定的,我们拿到IC使用时要去读IC的数据手册来知道这个引脚怎么用。
2 计算机的核心设备CPU
CPU就是一块超大规模集成电路,CPU的本质就是电路。
2.1 CPU(Central Processing Unit,中央处理器)
(1)CPU = 运算器 + 控制器
(2)CPU = ALU + cache + Bus
(3)CPU = 汇编指令 + 寄存器
2.2 CPU的工作原理
(1)CPU通过总线从存储器取出指令到内部,然后译码,然后执行。
(2)一条指令包括:指令码+数据。
(3)执行指令反应为一个控制操作或者一个数学运算。
(4)给单片机编程其实就是给CPU写指令序列。
3 给单片机下个定义
3.1 计算机系统三大组成部分:CPU、内部存储器、IO
(1)单片机属于计算机的一种。
(2)IO就是input/output,也就是输入输出。譬如键盘、鼠标、触摸屏等就是输入设备,而LCD显示器、声卡等就是输出设备。
3.2 单片机的结构框图分析
(1)我们来看单片机这个计算机系统的结构框图。
(2)框图中的方块是组成部件、箭头表示总线Bus。
(3)CPU处于单片机系统的核心位置,别的模块都通过总线和CPU进行关联。别的模块之间一般没有总线直接相连,有时候2个互相有关系的模块也会有总线直接相连。
(4)IO其实就是芯片上的引脚,不同的单片机型号有不同的IO数量和定义。
3.3 如何定义单片机
(1)单片机就是一台微型计算机。
(2)台式电脑或者笔记本电脑(这种计算机叫PC)也是一种计算机系统,这种计算机系统由很多个零部件组成。这些零部件由不同的厂商生产,可以去组合组装成一台电脑。
(3)单片机这台计算机的所有零件全部做在了一个IC内部,并且出厂前被塑料壳封装起来了。传统计算机中的主要部件单片机都有,都集成到内部去了。
(4)MCU的概念(参考百度百科词条:MCU),所以说大家看到:单片机、单片微型计算机、MCU、微控制器、微控制单元等,都是一个意思。
微控制单元(Microcontroller Unit;MCU) ,又称单片微型计算机(Single Chip Microcomputer )或者单片机,是把中央处理器(Central Process Unit;CPU)的频率与规格做适当缩减,并将内存(memory)、计数器(Timer)、USB、A/D转换、UART、PLC、DMA等周边接口,甚至LCD驱动电路都整合在单一芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制。诸如手机、PC外围、遥控器,至汽车电子、工业上的步进马达、机器手臂的控制等,都可见到MCU的身影
4 ROM与RAM
4.1 计算机中的2种存储器
(1)计算机要存储器干嘛
(2)内存:内存和CPU接轨比较紧密,内存可以被CPU直接访问,内存可以按照字节为单位来随机访问、程序运行时离不开内存、程序中的变量都是定义在内存中的。内存受限于物理技术和成本,容量比较小而贵;内存速度比外存快很多,CPU的速度比内存的速度快好多。
(3)外存:外存和CPU之间比较远,外存不可以被CPU直接访问,外存一般以块为单位来访问,不能以字节为单位随机访问。外存容量大而便宜,外存速度比内存慢好多。
(4)综合来说,计算机系统是这样工作的:文件和数据不用的时候就放在外存中,要用的时候从外存读取到内存,然后CPU再从内存中读取数据来直接使用。
4.2 ROM
(1)read only memory,只读存储器,意思是只能读不能写。实际上世界上根本不存在真正的只能读不能写的器件,我们ROM这里的只读意思是:程序运行时只能通过程序自己本身的操作去读而不能写。
(2)常见的ROM:单片机中用来存储用户烧录的程序的器件就是ROM,烧录的过程其实就是在写ROM,但是程序运行时是不能修改ROM内容的。烧录程序一般要通过烧录器来完成。
(3)storage,存储器,含义有点像仓库存储东西。ROM就有点类似于仓库,用来存储程序代码。
(4)ROM有点像外存的概念,但是并不完全相等。主要是因为计算机系统有不同的设计方法,譬如PC机和单片机的设计就不相同。PC机中有外存没有ROM,单片机中有ROM没有外存。单片机中程序平时是存储在ROM中,运行时由ROM直接供给CPU。
4.3 RAM
(1)random access memory,随机访问存储器。
(2)常见的RAM:从物理上来讲,主要分为SRAM和DRAM,单片机中一般使用的都是SRAM,嵌入式SoC中和PC机中用的都是DRAM。
(3)memory,存储器,专指的是计算机的内存。
4.4 单片机中的ROM和RAM
(1)单片机中的ROM一般是Flash(闪存),有些地方会看到叫flash memory;单片机中的RAM一般都是SRAM;这两个共同构成单片机中的存储体系。
(2)ROM和RAM的协同工作方式是:ROM用来存储用户写好编译好的程序,运行时CPU直接从ROM中读取一条一条的指令来运行,指令运行过程中产生的临时数据放在RAM中。所以基本可以理解为:ROM是单片机用来放程序的,RAM是用来放数据的。
5 单片机的工作原理
5.1 主要器件负责干嘛?CPU、存储器、IO
5.2 统一的时钟节拍
(1)这里有一个概念叫:同步。同步就是好多个独立的部分按照同一个节奏步调来动,以此来实现一个配合。
(2)和同步相对的一个概念叫异步,异步就是各自干各自的。
(3)单片机的各个模块之间是同步工作的,CPU和存储器和IO和单片机中其他东西这些模块之间通过一个统一的节拍来同步工作,这个统一节拍就是单片机的时钟。
(4)这个时钟节拍对单片机很重要,单片机内部在一个时钟节拍中只能做一件事情。所以单片机要发生一些变化或者做一些事情,最小的时间单位就是1个时钟节拍。单片机的时间单位都是时钟节拍的整数倍。
(5)单片机中的CPU、存储器、IO等都是以时钟节拍为动作节拍的,所以单片机是一个同步系统。
(6)时钟周期的长度(时钟节拍的快慢)影响了单片机的速度,所以这个时钟就叫做单片机的主频。主频越高性能越高,一般PC的主频都是2G多3G多,51单片机的主频MHz级别。一般手机CPU的主频也在1G-2G左右。一般高级单片机如STM32的主频在百MHz级别。
6 外设与内部外设
6.1 什么是外设
(1)外设英文叫 peripheral ,全称为外部设备。属于单片机中的模块。
(2)单片机中除了三大部件(CPU、IO、存储器)外,还有一些别的东西,譬如串口控制器、譬如I2C控制器等····这些东西就叫外设。
(3)早期单片机功能很弱小,不具备很多功能(譬如中断功能、譬如串口通信功能),那我们用单片机做产品,只能外部扩展一些专用芯片(中断控制有中断控制器芯片,串口通信我们有串口通信芯片)来和单片机结合(做到一块电路板上用导线连接)起来工作。这种产品设计中核心部分就是单片机,外部配合的这些专用芯片就是外部设备,简称外设。
(4)后来随着半导体工业发展进化,集成电路的集成能力变强大了,我们干脆就把一些常用的外设直接集成到单片机里边去了。所以单片机里边就有了一些原来被称为外设的东西,但是叫法名称还是沿用了开始的名称。
6.2 什么叫内部外设
(1)我为了区分外设,将集成到单片机里边的外设叫做内部外设。
(2)还有外部外设,就是至今仍然没有集成到单片机内部,还在外部的那些外设。
7 单片机与电路板
7.1 什么是电路板(PCB printed circuit board,印刷电路板)
(1)外观:PCB板 = 基板(绝缘)+电路。
(2)作用:PCB的作用就是骨架和连接。最终目的就是把所有的元件按照正确的电路图连接起来形成一个完整的可以工作的电路。
(3)构成和材质,常用的基板材质都是FR4(玻璃纤维),PCB板是由多层构成的(单面板、双面板、四层板、8层板、12层、16层、24层)。
(4)印刷电路其实就是在不导电的基板表面按照电路构成来印刷一层导电物质形成电路。最后形成的就是一个里面的芯是不导电的FR4,外面有一层构成了电路的铜(标准术语叫覆铜),为了避免铜氧化或者与外部导电外部还有一层油墨,刷油墨时要露出来焊接点(焊接点一般有2种:一种是插针式、一种是贴片式),焊接点上本来就是铜,但是我们为了方便焊接一般会做镀锡。
(5)PCB板其实就是硬件电路(元件和电路设计)的载体。
7.2 什么是芯片
(1)芯片就是:芯是半导体技术形成的电路,外面的壳是塑料绝缘壳,里面电路通过芯片引脚接出来用于连接外部电路。
7.3 芯片方式和电路板方式的关系
(1)相同点。芯片其实就是一个微型的电路板。这两个东西本身一模一样,早期只有电路板没有芯片,后来半导体工艺发展后有了微型器件,所以人把一些电路利用半导体工艺直接作死到一个芯片中去形成了IC。
(2)不同点。电路板体积较大,功率大;芯片体积小,功率小。
(3)我们做一个电子产品究竟应该如何去总体设计?现代的设计方案都是芯片+电路板。能做到芯片里面的都做进去(趋势是越来越进去的多),实在不能做成芯片的就只好放在外面。原来的产品,譬如老式大屁股电视机主板非常大,而新式的智能电视机主板就是一个大芯片+很少的外围设备。
(4)单片机开发板其实就是PCB板主板+单片机芯片+其他芯片+其他外围电路元器件总体构成的。这就是普遍的电子产品的结构。
8 软件与硬件的区别和联系
8.1 从产品角度
(1)硬件是?产品的载体和身体。
(2)软件是?产品的思维和灵魂、精神。
8.2 软硬结合
(1)物联网不能靠纯软件打造。
(2)纯硬件产品大部分都低端。
9 硬件工程师主要工作职责
电路图的分析和设计
原件的选择和参数确定
PCB的设计和样板焊接、调试
生产跟踪和问题解决
10 软件工程师主要工作职责
初级软件工程师:辅助测试、写代码、维护
中级软件工程师:独立工作、对产品负责、解bug
高级软件工程师:需求分析、框架设计、团队管理
软件工程师成长路线:学到基础(知识+能力)->找到工作->学习和锻炼->中级->高级/转方向
11 datasheet的重要性
11.1 什么是datasheet
(1)datasheet就是数据手册,其实就是芯片的文档。
(2)数据手册中描述的都是这个芯片/器件的物理参数、电学参数、时序图、编程需要的信息、别的信息。总的来说这个芯片的所有有用的信息都在数据手册中,使用这颗芯片过程中的任何疑问都可以去datasheet中查询。
(3)我们学习单片机软件开发过程中,要不断去查询各种芯片的数据手册以获取一些有效信息来指导我们。
11.2 datasheet谁写的?
(1)datasheet是由芯片厂商提供的。datasheet其实就是芯片的产品说明书。
11.3 datasheet从哪里来?
(1)最官方最权威的途径就是到芯片厂商的官方网站去下载。
(2)开发板附带的光盘资料中一般也会有。
(3)将芯片型号信息敲到百度去搜索其数据手册。
11.4 datasheet应该怎么使用?
(1)数据手册不是书,更不是教材,数据手册更像是一本字典。所以不是从第一页看到最后一页,更不用试图是记住。
(2)数据手册一定要先浏览一遍。尤其对于刚开始学习的人。浏览的目的是大概知道什么东西在哪里(将来用到时大概知道到哪里去找),里面一些概念基本理解,但是并不是为了记住。
(3)数据手册的正确用法就是:前面先简单看一遍(其中的前面一些可以认真看,后面的了解即可),用到某个具体知识时再根据前面浏览时的了解去具体查找数据手册中相关部分,这时候再去认真看。
12 原理图和PCB图
12.1 原理图
(1)原理图叫电路原理设计图,就是用符号来绘制出的电路连接的逻辑图。我们平时讲的电路图其实就是原理图。原理图不是实物。
(2)原理图由:线条、方框、圆圈、数字、字母等组成。看懂这些符号所对应的电路实物,就能看懂原理图。
(3)原理图中每一个符号表达一种含义,常见的有:
直线:表示导线,是用来连接元件构成电路的。
方框:表示器件,如IC、插座
常见符号:如电阻、电容、三极管等···
特殊符号:不常见器件
(4)原理图中的每一个器件都有一个编号,如IC都用Un(U1、U2等),电容都用Cn(C1、C2)····这个编号在原理图中是唯一的,这个编号用来表示/记录这个元器件。
(5)原理图中芯片类型的器件还会有一个名字,名字一般是器件的型号。
(6)原理图中大多数器件还有一个参数值,譬如电容的容量、电阻的阻值等。
(7)有些器件(IC、插座)有引脚,引脚编号用数字表示。
(8)原理图中有个网络的概念,原理图上2个编号一样的节点其实在逻辑上是连在一起的。网络的发明纯粹是为了方便画图,让图不会导线连接的跟蜘蛛网一样。分析原理图时一定要注意网络,否则看到的可能就是一半的原理图。
12.2 PCB图
(1)硬件工程师在设计产品硬件时的步骤是:先有原理图,然后用原理图画出PCB图。
(2)PCB图是原理图和实际器件结合起来后,生成的PCB板的结构图纸,PCB图的作用就是拿给做PCB板的厂商去印刷电路板。
(3)对于软件工程师来说,PCB图完全不用去关注,我们只关注原理图。
12.3 BOM表
(1)BOM就是bills of meterials,就是物料表,物料表是整个电路中用到的所有物料的一张清单。
(2)BOM表是研发部门(硬件工程师)提供,一般是给生产部门来备料、记录用的。
(3)BOM中每个物料的记录和对应就靠物料编号。
时间:2021-03-24
关键词:
硬件
单片机
软件
-
昨晚,央视315晚会曝光了“诱导老年人下载APP”“APP违规收集老年人个人信息”等违规行为。
今日,工信部发文称,针对2021年中央广播电视总台“3.15”晚会曝光的内存优化大师、智能清理大师、超强清理大师、手机管家pro四款APP,我部第一时间组织开展技术检测,查实其存在欺骗误导用户下载、违规处理个人信息等问题,已要求主要应用商店予以下架,并组织北京、天津、上海、广东四省市通信管理局对涉事企业主体进行调查处理。
前期专项整治行动中,个工信部针对存在欺骗误导用户下载问题的APP,责令整改300款、公开通报37款、下架3款;针对存在违规处理个人信息问题的手机管家、内存优化、垃圾清理类APP,责令整改75款、公开通报20款、下架1款。
同时,工信部高度重视互联网应用适老化工作,根据国务院《关于切实解决老年人智能技术困难实施方案》相关要求,已于2021年1月启动“互联网应用适老化及无障碍改造专项行动”,首批指导158家老年人常用的网站和APP完成改造,针对“强制广告多、容易误导老年人”问题,要求改造后的APP版本不再设有广告插件。
央视315晚会上,“内存优化大师”“超强清理大师”“智能清理大师”“手机管家PRO”等App被点名。
日前,中国电子技术标准化研究院网安中心的专家进行了监测,在一款小说阅读软件里,正常阅读过程中出现了“安全清理”提示,工作人员点击后,下载安装了一款叫“内存优化大师”的App,自动清理过程中又继续蹦出“清理手机缓存”提醒,点击后,手机又下载安装了“超强清理大师”。
不断“提醒、下载、清理”,同样路径接力重复,手机上接着又安装了“智能清理大师”和“手机管家PRO”。
然而测试人员对“手机管家PRO”进行测试后发现,这款App表面上看起来是在清理手机垃圾,背地里实则在不断偷偷大量获取手机里的信息。
工作人员提示:这些数据信息对老人们进行用户画像,给他们被打上“容易被误导和诱导”的群体标签。
于是,各种低俗、劣质,甚至带有欺骗套路的广告和内容就会源源不断地推送到老人的手机上,使得一些老年人上当受骗。
来源:快科技
版权归原作者所有,如有侵权,请联系删除。
免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!
时间:2021-03-17
关键词:
手机
APP
软件
-
InFlow是一款自动化的全方位工程软件解决方案,对运作效率可谓设定了全新的标准。
2021年3月15日,奥宝科技公司旗下的Frontline公司发布了产品InFlow™,这是一款针对PCB(印刷电路板)制造商的强大、自动化、全方位的工程软件解决方案。InFlow可实现对整个工程工艺的全覆盖,将规划时间减少高达60%,从而可以大大缩短上市时间,即使是在最高设计复杂度及产量要求的情形下。奥宝科技隶属于KLA公司(纳斯达克股票代码:KLAC)。
InFlow系统通过其完整的自动化,可以产出标准化、高质量、准确无误的制造指引,对任何经验水平的操作人员而言,都可以提高生产力以及缩短上市时间。而通过其内置的CAM(计算机辅助制造)图形编辑器,InFlow还可以减少对CAM资源的依赖,并支持在工程系统内进行料号的编辑。它还拥有标准化的自动检查表和可追溯性报告,可以缩短制造前的工程询问周期。
“PCB制造商正面临着对高速、高复杂性电路板日益增长的需求,”Frontline CAM和工程研发总监Orit Karlin这样说道。“我们开发的InFlow产品可以用来满足这些需求,并大大加快产品的上市时间以及预生产过程。作为一款全自动化的解决方案,InFlow可以确保即使是经验不足的工程师也能在极具挑战性的项目和技术背景下,交付标准化、高质量的输出。”
InFlow是基于Frontline在PCB生产和工艺规划领域长达25年的经验及专业知识,基于公司对行业的深入了解,以及基于公司在CAM和工程软件市场上技术方面的领导地位。InFlow作为Frontline自动化的PCB工程系统,是Frontline全球领先的集成软件解决方案系列的一部分,它可以自动化PCB制造的整个预生产过程,从准备报价到工艺规划与CAM,再一直贯穿至生产车间。
(Frontline InFlow™自动化的PCB工程系统,可以自动化PCB制造的整个预生产过程)
关于奥宝
奥宝科技有限公司现在隶属于KLA公司,是一家在电子产品生产解决方案强化产出及工艺领域的全球领先供应商。奥宝科技可以为印刷电路板(PCB)和平板显示器(FPDs)的制造提供尖端的解决方案,也提供PCB计算机辅助制造(CAM)、工程和工业4.0的软件。
奥宝科技的解决方案旨在实现下一代创新型的电子产品的大规模生产,并提高现有和未来电子产品生产流程的成本效益。
关于KLA
KLA主要开发行业领先的设备和服务,以推动整个电子行业的创新。我们致力于先进的制程控制和工艺实现解决方案,涵盖制造晶圆和分划板、集成电路、封装、印刷电路板和平板显示器。在与全球领先客户的密切合作下,我们的物理学家、工程师、数据科学家和问题解决专家团队设计出的解决方案,推动着世界的前进。
时间:2021-03-16
关键词:
PCB
奥宝科技
Frontline
软件
-
链接:https://blog.csdn.net/qizhi666/article/details/84241088?depth_1-
1引言
1.1编写目的
该文档在概要设计的基础上,进一步的细化系统结构,展示了软件结构的图标,物理设计、数据结构设计、及算法设计、详细的介绍了系统各个模块是如何实现的,包括涉及到的算法,逻辑流程等。
预期的读者:程序员
1.2背景
a. 待开发软件系统的名称:机房收费系统
b. 项目的任务提出者:张老板
c. 项目的开发者:齐先生
d. 项目的用户:志晟网络的全体用户
e. 运行该软件的计算站(中心):志晟网络全体硬件设备
1.3定义
系统结构:对系统整体布局的宏观的描述
算法:对于程序内部流程计算的逻辑表达方式。
1.4参考资料
列出有关的参考资料,如:
a. 详细设计说明书(G8567——88)
b. 《软件工程概述》 李存珠编著 南京大学计算机系出版 2001年8月
2程序系统的结构
3一般用户设计说明
3.1程序描述
该程序指对学生的上下机情况及学生信息进行查看,没有涉及管理功能,只是将学生的信息输入数据库,经过系统处理后得到新的数据信息。
3.2功能
3.3性能
3.3.1精度
软件的输入精度:只保留整数部分
软件的输出精度:只保留整数部分 传输过程中的精度:只保留整数部分
3.3.2灵活性
A.运行环境的变化:该软适用于现在流行的操作系统。
B.精度和有效时限的变化:因不同情况而变化。
C.计划的变化和改进:根据用户的需求随时软件做出更新和升级。
3.3.3时间特性的要求。
相应时间:0.5s内
更新处理时间:0.5s内
数据的更换和传送时间:1s内
3.4输人项
3.5输出项
3.6算法
时间差=下机时间-上机时间
金额按照基本数据设定和时间差判断金额的计算方法
3.7流程逻辑
3.8接口
3.9存储分配
3.10注释设计
说明准备在本程序中安排的注释,如:
a. 在模块首部注释说明模块开始编写时间、编写人员及其基本功能
b. 在变量声明阶段,大概说明变量的类型和用途
c. 在判断、循环或者顺序枝分点上注释说明程序代码的功能
3.11限制条件
必须保证程序正常的连接到服务器
3.12测试计划
测试用例:选取有代表性的数据,避免使用穷举法
测试方法:使用白盒测试法,语句覆盖、判定覆盖、条件覆盖等操作。
3.13尚未解决的问题
暂无
4操作员设计说明
4.1程序描述
该程序指对学生的上下机情况及学生信息进行查看,包括注册、充值、修改信息、退卡以及对操作员工作记录的查询工作。一般用户没有此权限。
4.2功能
4.3性能
4.3.1精度
软件的输入精度:只保留整数部分
软件的输出精度:只保留整数部分
传输过程中的精度:只保留整数部分
4.3.2灵活性
A.运行环境的变化:该软适用于现在流行的操作系统。
B.精度和有效时限的变化:因不同情况而变化。
C.计划的变化和改进:根据用户的需求随时软件做出更新和升级。
4.3.3时间特性的要求。
相应时间:0.5s内
更新处理时间:0.5s内
数据的更换和传送时间:1s内
4.4输人项
4.5输出项
4.6算法
总金额=剩余金额+充值金额
剩余金额=总金额-消费金额
退还金额=剩余金额-消费金额
4.7流程逻辑
4.8接口
4.9存储分配
4.10注释设计
说明准备在本程序中安排的注释,如:
d. 在模块首部注释说明模块开始编写时间、编写人员及其基本功能
e. 在变量声明阶段,大概说明变量的类型和用途
f. 在判断、循环或者顺序枝分点上注释说明程序代码的功能
4.11限制条件
必须保证程序正常的连接到服务器
4.12测试计划
主要在注册模块、注意选取不同的数据,确保输入数据合法,符合规定的范围 对于充值、退卡以及信息维护模块,举例测试并观察测试结果是否符合逻辑规律。
4.13尚未解决的问题
暂无
5管理员设计说明
5.1程序描述
管理员模块主要是对整个系统的管理,包括对操作员的查看和管理,用户的添加和删除,系统基本数据的设定以及结账工作。
5.2功能
5.3性能
5.3.1精度
软件的输入精度:只保留整数部分
软件的输出精度:只保留整数部分
传输过程中的精度:只保留整数部分
5.3.2灵活性
A.运行环境的变化:该软适用于现在流行的操作系统。
B.精度和有效时限的变化:因不同情况而变化。
C.计划的变化和改进:根据用户的需求随时软件做出更新和升级。
5.3.3时间特性的要求。
相应时间:0.5s内
更新处理时间:0.5s内
数据的更换和传送时间:1s内
5.4输人项
5.5输出项
5.6算法
总金额=剩余金额+充值金额
剩余金额=总金额-消费金额
退还金额=剩余金额-消费金额
5.7流程逻辑
5.8接口
5.9存储分配
5.10注释设计
说明准备在本程序中安排的注释,如:
a. 在模块首部注释说明模块开始编写时间、编写人员及其基本功能
b. 在变量声明阶段,大概说明变量的类型和用途
c. 在判断、循环或者顺序枝分点上注释说明程序代码的功能
5.11限制条件
必须保证程序正常的连接到服务器
5.12测试计划
A.主要在结账模块,注意选取不同的时间段,观察结账是否符合系统逻辑运算法则
B.对于添加删除用户模块,举例测试并观察测试结果是否符合逻辑规律
C.最后是日结账单和周接账单,检验报表是否正确,能否正确预览和打印。
5.13尚未解决的问题
暂无
感谢您的阅读,希望对您有所帮助!
免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!
时间:2021-03-03
关键词:
软件工程
设计说明书
软件
-
因为在软件行业35岁就算老人了
在实际的工作中,其实很惨...
但现实中搞硬件的门槛确实很高 硬件工程师也基本不存在中年危机 如果实在搞不下去了 很多人自己去创业也干的不差 更容易从全盘去考虑问题 一个好的硬件工程师 熟知每一个项目和技术的细节 在成本、功能、性能和客户之间游刃有余 然而却是企业可遇而不可求的 顶级的软件工程师却有很多 想要赢市场就得真刀真枪的拼硬件
小编觉得:对于从属于硬件工程师大类的IC工程师来说,以上大部分也符合! 大家觉得呢?
免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!
时间:2021-03-02
关键词:
硬件
硬件工程师
软件
-
近日,一位来自美国亚利桑那州监狱部门的负责人向新闻网站 KJZZ 举报,其所在监狱的囚犯管理软件存在 Bug ,导致数百名符合释放条件的囚犯被继续关押。实际上,该负责人于一年前就在监狱部门的内部指出该 Bug,但至今没有人采取行动来修复该软件的 Bug。
01
据了解,这款囚犯管理软件名为 ACIS,是监狱部门投入了 2400 万美元雇佣北美的一家 IT 商业&决策公司开发的,ACIS 应用程序中有一个软件计算囚犯释放日期的模块,但经过多次应用,无法对 2019 年通过的 1310 号修正案进行解释。
该修正案允许部分非暴力囚犯通过学习或者劳动教育能获得额外的积分,即他们在监狱中完成编程等职业教育课程或拿到高中文凭,最终当积分达到一定要求后,他们可以被提前释放出来。
不过,据监狱有关部门的消息人士表示,这款 ACIS 软件无法识别符合 SB 1310 修正案条件的囚犯,也无法在他们完成编程课程后计算新的释放日期。
举报者说:
“从第一天起,我们就知道这行不通……当他们批准这条法案时,我们看着它说 'oh,sh*t'”。
在反复发出内部警告之后,这名员工在 2020 年 10 月向部门领导发送了一份报告,其中详细介绍了软件错误。
领导知道后并未努力修复软件漏洞,而是试图通过人工来识别符合条件的囚犯。还命令他和其他员工“一句话也别说……我们花了太多钱在这套软件上,现在没法回头了。”
02
据举报者称,自 2019 年 11 月以来,整个 ACIS 囚犯管理软件程序已遇到超过 14,000 个错误。其它几个同类程序也未能正常运行,包括跟踪囚犯医疗情况、财产情况、宗教信仰、安全分类和帮派关系的等模块。
©照片:档案照片(AP) 亚利桑那州佛罗伦萨州立监狱
媒体报道后,监狱发言人回应道,刑满释放的囚犯被继续关押的说法是错误的,但 ACIS 软件系统确实“没有根据参议院 SB 1310 法案计算出正确的释放日期”。
刑事司法记者 Jimmy Jenkins 发推文说,亚利桑那州惩教局已阻止所有员工访问 KJZZ 网站。
针对这样的 Bug,谁又将为其“背锅”?
参考链接:
https://kjzz.org/content/1660988/whistleblowers-software-bug-keeping-hundreds-inmates-arizona-prisons-beyond-release
https://www.msn.com/en-us/news/technology/software-bug-keeps-arizona-prisoners-behind-bars-past-release-dates/ar-BB1dUHqw
END
来源:CSDN,整理:李磊
版权归原作者所有,如有侵权,请联系删除。
▍
推荐阅读
呵,你会51单片机的精确延时吗?
关于画电路图的10大分歧,你站哪边?
早期MCU芯片是怎么加密的?
→点关注,不迷路←
免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!
时间:2021-02-26
关键词:
网站
Bug
软件
-
为什么要使用Makefile工具?
当源码文件比较多的时候,不适合直接gcc命令来编译,这时候需要一个自动化编译工具来编译。Make 一般说是GNU Make 是一个软件,用于将源码文件编译器为可执行的二进制文件,make工具主要用于完整自动化编译,make编译的时候需要Makefile文件提供编译文件。
1、引入Makefile
a.c------>***.s------>***.ob.c------>xxx.s------>xxx.oxxx.o + ***.o ------>test
缺点:修改任一个文件所有.c都要重新编译,文件更多时可想而知,时间耗不起!
改进:应该分别编译,最后再链接
gcc -c a.c gcc -c b.cgcc a.o b.o –o test
为此需要一个这样的工具:
01.如果工程没有编译过,那么工程中的所有.c文件都要被编译并且链接成可执行程序。02.如果工程中只有个别C 文件被修改了,那么只编译这些被修改的C文件即可。03.如果工程的头文件被修改了,那么我们需要编译所有引用这个头文件的C文件,并且链接成可执行文件。
2、makefile 的基本规则: 当依赖比目标新执行命令
目标文件:依赖文件
TAB键 命令
根据Makefile的基本规则,我们针对上面的gcc编译过程来写一个Makefile文件,如下所示:
test:a.o b.ogcc –o test a.o b.oa.o: a.cgcc -c a.cb.o: b.cgcc -c b.cclean:rm *.orm test
这样我们使用 make 命令就可以完成对 a.c b.c的编译和链接,直接生成test执行文件。
3、Makefile 的变量
Makefile 也可以添加变量,但Makefile跟C语言不一样,没有类似于 int char …等很多的类型,只有字符串类型,比如可以定义一个 object = a.o b.o 引用变量使用$(objdect)即可。
这样就可以将上面的Makefile尽心简化,不需要输入两次的 a.o b.o, 具体如下:
objdect = a.o b.otest:$(object) gcc –o test $(object)a.o: a.c gcc -c a.cb.o: b.c gcc -c b.cclean:rm *.orm test
4、Makefile的通配符%和自动化变量
对于上面的Makefile如果有很多.c文件,那我们就需要写很多依赖规则,可以使用通配符来对其简化,%.c 表示所有的.c文件,%.o表示所有的.o文件,当然我们就可以把上面的!
b.o 依赖于 b.c和a.o依赖于a.c 等写成 %.o 依赖%.c的形式。对于命令则需要引入另一个叫做自动化变量了,如何通过一行命令来从不同的依赖文件中生成对应的目标?自动化变量就是用来实现这个功能的。在自动化变量中常用的是$@、$
时间:2021-02-25
关键词:
编译
Makefile
软件
-
2021年2月2日,日本东京讯——全球半导体解决方案供应商瑞萨电子集团今日宣布,推出PTP(Precision Timing Protocol,精密时钟协议)Clock Manager软件。作为业界首款基于Linux的时钟管理软件,它为4G、5G和开放式无线接入网(O-RAN)等电信网络(包括前传与回传系统)提供易于使用和访问的同步时钟解决方案。 基于IEEE1588协议的PTP Clock Manager具备API,可通过Linux标准PTP堆栈将瑞萨时钟IC与各种网络处理器相连接,可应对不同应用场景的客户进行PTP同步访问,而无需花费大量时间进行定制。这种与时间戳单元(TSU)无关的方式使客户可以访问他们所选择的处理器/时钟组合,无需自行创建API,从而降低开发成本并获得更高设计灵活性。与瑞萨时钟解决方案共同使用时,客户可获得PTP Clock Manager的“免费”授权。 瑞萨电子物联网及基础设施事业本部、时钟产品部副总裁Bobby Matinpour表示:“随着运营商向5G网络的迁移,时钟精度变得愈发重要。开源的Linux环境使客户能够更加灵活地选择TSU与时钟组合以构建卓越的时序性能,从而创建支持IEEE1588的网络系统。我们在提供PTP同步时钟管理软件的同时,还提供出色的时钟解决方案,且无需支付授权费用,这将重塑网络系统开发的市场格局。我们很高兴能够不断推进创新,与O-RAN架构相辅相成,扶持并赋能新晋供应商取得成功。” 赛灵思有线与无线产品事业部高级营销总监Gilles Garcia表示:“我们与瑞萨电子密切合作开发联合参考设计,帮助客户简化产品并加快其上市速度。5G网络需要高精度1588 PTP进行时间和相位同步。瑞萨PTP Clock Manager是我们Versal AI Core系列VCK190、Zynq UltraScale + RFSoC ZCU216评估套件以及Xilinx以太网解决方案的重要助推器。” 全新基于Linux的PTP Clock Manager还可与瑞萨ClockMatrix™ 8A3400x系列的高性能、高精度、多通道时钟产品,以及符合IEEE1588标准的82P339xx产品配合使用,以简化电信PTP解决方案的集成。 PTP Clock Manager的关键特性: · 高效数据包延时偏差(PDV)滤波器支持IEEE1588网络 · Linux内核PHC子系统支持瑞萨ClockMatrix时钟产品 · 向下兼容Linux v3.0或更高版本 · 减少随机排队延迟导致的数据包延迟偏差的影响 · 在全球范围内符合ITU-T同步建议 · 提供清晰源代码以简化调试 作为优秀的时钟芯片供应商,瑞萨电子提供业内唯一的“一站式”时钟解决方案,涵盖从全功能系统解决方案到简单时钟组件所需器件的专业知识及产品。全新PTP Clock Manager扩展了这一产品组合,涵盖软/硬件解决方案,可支持全方位的时钟需求。 供货信息: 基于Linux的PTP Clock Manager现可通过授权免费使用。
时间:2021-02-02
关键词:
瑞萨电子
代码
软件
-
现代软件开发具有更多的代码、语言、平台以及部署选项。
DevOps要求自动化最大限度地提高速度。而这些都意味着更多的安全风险。因此,DevSecOps开始受到关注,从软件开发初期就进行全生命周期的安全管理。新思科技(Synopsys)近期发布的《2020年DevSecOps实践和开源管理报告》显示DevSecOps在全球范围内迅速增长。总计63%的受访者表示他们正在将一些DevSecOps活动融入其软件开发计划中。
那么,如何将安全置于DevOps之中呢?
引入DevSecOps
向DevSecOps过渡极具挑战性。一方面,虽然目前主要是安全小组独立地负责安全,但逐渐开发团队也参与进来,共同负责安全和预算,使安全成为开发流程不可或缺的一部分;另一方面,开发团队正在通过自动化和持续改进流程来优化速度,实践DevOps。
许多团队缺乏全盘计划,忽视了管理风险。团队没有采取审慎的、深思熟虑的方法来提高安全,而是陷入一种僵局。团队试图使一切运行得足够快,以跟上DevOps的步伐,但由于信息量太大,以至于他们不知道从哪里开始才能改善流程。
在不影响速度的情况下为DevOps增加安全
从切实降低风险的角度出发,从整体上解决安全问题的最佳方法是什么?答案是更高效的自动化。开发人员不必在每次更改代码时都运行全面扫描,而是根据上下文使用智能测试,并决定要运行的内容、运行时间以及运行方式。
逐步提升安全
让我们看一下软件开发中安全测试的典型演变。也许从部署静态应用安全测试(SAST)开始。仅分析集成就有许多可能性:
· 分析每次提交
· 分析每个推送请求
· 分析主要版本
· 选择分析检查器
· 配置分析检查器
接下来,您决定进一步提升安全性,添加软件组成分析(SCA)。您可以将其单独集成到管道中,但是仍然有很多其它选择:
· 扫描应用程序
· 扫描部署容器
· 选择扫描粒度和其他配置选项
· 识别通用漏洞披露(CVE)公布有违反政策的组件
· 识别CVE公布的组件在通用漏洞评分系统(CVSS)的评分
· 识别操作风险高的组件
· 识别有一定许可证风险的组件
· 将扫描结果的总结上传到风险追踪系统
· 每个不符合要求的组件信息都将发送到风险追踪系统
将策略当作代码
策略很重要。要求所有应用程序开发团队使用静态分析是一种简单但无效的软件安全策略。更有效的策略应该根据需要指定要使用的工具、所需的配置,最重要的是,可以指定在发布应用程序之前所需的结果类型。
阐明策略的好方法是采用机器可读文件的形式,有时将其称为代码(我实际上并没有将其称为代码;它实际上是一个配置文件,可能是JSON或YAML)。
DevSecOps中安全层的关键功能
这里的“策略”描述了应该进行哪些测试、规定需要什么样的结果(或将停止构建或部署)、将什么样的结果发送到常规问题追踪系统、需要进行哪些合规性活动等等。可以有多个策略,每个策略反映不同类型的应用程序和不同类型的风险状况。
根据策略的规定在开发管道中的特定事件上执行相应的测试,但是针对项目的当前状态进行了优化。安全层处理与工具的集成。
与安全层的轻量级集成发生在特定事件(例如合并请求)上。安全层旨在简化集成。
什么时候应该做安全防护呢?在发生代码仓提交或代码仓合并请求之类的事件时,管道会要求安全层执行安全测试。安全层可以发挥一些强大的魔力,我们称之为智能编排(Intelligent
Orchestration)。首先,它参考策略来了解哪种安全测试是适合的。根据策略,安全层可以优化测试的执行方式。例如,如果开发人员刚刚对CSS文件进行了更改,那么Intelligent
Orchestration会意识到完整的SAST扫描和SCA扫描是不必要的。对于更改特定模块中的几个Java源文件,可以执行增量SAST以优化速度。
那是否合规呢?开发管道可以要求安全层对项目是否合规做出判断。
我们如何处理安全问题?可以按严重性对结果进行分类,通过CWE Top 25或OWASP Top
10进行检查,也可以根据需要进行过滤和排序。您可以将结果整合到Tableau或Power
BI之类的分析工具中。您可以制作图表,显示随着团队努力解决安全问题而使得错误(和风险)下降的趋势。
使用安全集成层还可以简化添加新的安全测试工具或替换现有工具的流程。每个新工具都集成到安全层中,但是开发管道和安全层之间的接口保持不变。
为未来做好准备
软件安全是一个蓬勃发展的领域。如果您试图建立DevSecOps策略,那么确定所需的工具和流程可能会面临挑战。有了安全层,您开发过程中的集成就不需要更改。您只需要从安全层集成到新工具,然后调整策略即可。
时间:2021-02-01
关键词:
新思科技
DevOps
软件
-
要想了解电子工程专业用得比较多的软件有哪些,首先得了解一下电子工程专业相关的一些技术与行业应用分类。电子工程又称“弱电技术”或“信息技术”,其大致分类及起源学科如图1。
电子工程的应用形式涵盖了电动设备以及运用了控制技术、测量技术、调整技术、计算机技术,直至信息技术的各种电动开关。电子工程的主要研究领域为电路与系统、通信、电磁场与微波技术以及数字信号处理等。
电子工程相关的职业一般分为硬件工程师和软件工程师。而电子工程师是一个对从事集成电路、电子电气设备等相关产品生产、研发工作的技术人员的统称。
硬件与软件是不可分离的,硬件需要软件来执行其程序实现具体功能。软件需要硬件做载体,它们之间是一个相辅相承的关系。
▶ 软件工程师:
精通电路知识模拟电路,数字电路,会分析电路图,设计电路图,制作PCB,了解各类电子元器件的原理,用途,型号,精通单片机开发技术,会使用编程语言(汇编语言、C语言),能很熟练的用电脑作为辅助设计工具进行工作,能得心应手的使用常用的设计软件。会分析电路故障,对产品进行调试、检测。
▶ 硬件工程师:
主要要了解电路方面的知识,知道常用电子元器件的作用,原理,会使用电子测量工具,会使用电子生产工具,还要会装配,测试,生产工艺,维修等等,是技术与手动操作的结合。
今天笔者就来给大家介绍一下目前被电子工程师用得最多,也是功能比较强大的17款软件工具。
1 Altium Designer
Altium designer是一款一体化的电子产品开发系统软件。这套软件通过把原理图设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软件使电路设计的质量和效率大大提高。
目前,这个软件的市场定位主要是一些简单的板子,相对是较简单的偏低端的产品设计。一般都是画2层 4层为主。这个软件,在内地城市使用的占有率很高。很多读电子或者机电相关专业的学生在学校里面就有教这个,或者有要求去学这个,主要用于画简单的板子。
2 PADS
PADS的前身是POWER PCB,这个软件界面菜单很少,易上手。特别是消费类电子产品市场占有率非常高,早期都可以说在消费类产品里面差不多是垄断的地位,比如从早期的VCD、DVD、MP3、MP4、U盘、液晶电视,到现在的平板电脑、行车记录仪、车载电子产品、导航仪、数字机顶盒、安卓智能电视盒、手机等,都是绝对的市场占有率。在整个消费类电子产品里面,PADS几乎占了绝对的优势。
目前在沿海发达城市里面,PADS还是占主流市场,特别是深圳大部分公司还是用PADS,其次是allegro。
3 Cadence allegro
Cadence Allegro是Cadence推出的先进PCB设计布线工具。Allegro提供了良好且交互的工作接口和强大完善的功能,和它前端产品Capture的结合,为当前高速、高密度、多层的复杂PCB设计布线提供了最完美解决方案。
Cadence allegro不容易上手,一般只有大公司用,特别是做电脑主板的公司用,因为这个软件功能强大,画大型板子有优势。如电脑主板、大型工控板、服务器主板等大型板子,它的效率和优势非常明显。所以它的市场目前主要还是在电脑主板,大型工控板,服务器主板,等这些大型板子上,以及现在一些平板电脑,手机板也会有少量公司用。
4 Solidworks 可能有人说这就是一个普通的3D软件,怎么会用在电子工程领域呢? 那笔者来解释一下,之前笔者在深圳是做治具的,也称夹具。 这是一个偏硬件的行业。
简要介绍一下其整个制造流程,分析工程师把客户的文件资料(通常是PCB资料)用Tebo软件分析出来,然后给结构工程师设计治具结构,然后将需要加工的零部件用JD加工出来,然后进行装配。治具是用于PCB(印刷电路板)测试的工具。这是PCB制造的一个下游行业。但却在保证PCB出厂质量这方面起着不可或缺的而作用。
5 Matlab
Matlab也是值得接触的软件。Matlab在分析数据、开发算法以及创建模型方面都非常好用。
6 LabVIEW LabVIEW是专为测试、测量和控制应用而设计的系统工程软件,可快速访问硬件和数据信息。
7 Keil
Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。
8 Visual c++
Visual c++是一款集成开发环境(IDE)。它具有开发和调试 C++代码的工具。
9 Multisim Multisim是美国国家仪器(NI)有限公司推出的以Windows为基础的仿真工具,适用于板级的模拟/数字电路板的设计工作。 它包含了电路原理图的图形输入、电路硬件描述语言输入方式,具有丰富的仿真分析能力。
工程师们可以使用Multisim交互式地搭建电路原理图,并对电路进行仿真。Multisim提炼了SPICE仿真的复杂内容,这样工程师无需懂得深入的SPICE技术就可以很快地进行捕获、仿真和分析新的设计,这也使其更适合电子学教育。通过Multisim和虚拟仪器技术,PCB设计工程师和电子学教育工作者可以完成从理论到原理图捕获与仿真再到原型设计和测试这样一个完整的综合设计流程。
10 TestStand
TestStand也是美国国家仪器公司(NI)自主开发研究的一款软件平台。NI TestStand是一款可立即执行的测试管理软件,它可以帮助用户更快地开发自动测试和验证系统。NI TestStand可用于开发、执行和部署测试系统软件。
此外,用户还可使用任何编程语言编写的测试代码模块开发测试序列。测试序列可以指定执行流、生成测试报告、进行数据库记录以及连接其他公司系统。最后,用户可借助易用的操作界面,在生产中部署测试系统。
11 Switch Executive
Switch Executive是一款开关管理与路由应用软件,能够快速加速开发过程,简化对复杂开关系统的维护。Switch Executive提供交互式配置和自动路由功能,使开关路由系统的设计更加容易。
12 亿图电路图绘制
亿图电路图绘制软件是一款适合新手的入门级电路图设计软件,软件界面简单,包含丰富的图表符号,中文界面,以及各类图表模板。版本定期更新,不用担心无法绘制新型元件。适合专业的电子工程师用于电路图的设计。
13 Proteus
Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件。设计套件结合了易用和强大的功能集,可实现专业PCB的快速设计,测试和布局。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
14 Electronic Workbench
Electronic Workbench是一款电子电路仿真软件,可以进行各种电路工作演示,模拟各种电子电路,缩放显示的波形。Electronic Workbench是一款经典小巧,好用的模拟数字电路仿真软件。
15 LTspice电路仿真软件
LTspice是一款高性能Spice仿真器、电路图捕获和波形观测器,并为简化开关稳压器的仿真提供了改进和模型。在电路图仿真过程中,其自带的模型往往不能满足需求,而大的芯片供应商都会提供免费的SPICE模型或者PSpice模型供下载,LTspice可以把这些模型导入LTSPICE中进行仿真。LTspice电路图仿真软件在欧洲,美国和澳大利亚,中国广为流传。
16 OrCAD
OrCAD是一款专业PCB设计,电路板布局和布线的工具。可以帮助更快地生产可制造的电路板设计。Cadence OrCAD产品以其直观的操作界面以及强大的功能而深受广大电子工程师们的喜爱。是世界上使用最广泛的EDA软件。
17 Tebo
这是一款同时具有CAD和GERBER输入接口的ICT、ATE治具辅助制作软件。能够处理各种GERBER以及埋盲孔、正负片数据。同时具有多种CAD接口,处理数据省时省力,是制作高精密、复杂ICT、ATE测试治具的最佳选择之一。
总的来说,电子工程的水还是比较深的,要想在电子工程有所建树还是需要扎实的功底。希望笔者的整理对大家的学习之路会有帮助~
免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!
时间:2021-01-27
关键词:
电子专业
软件
-
在数字经济大潮中,随着企业全业务流程数字化的逐步落地和完善,下一步如何提高日常数字化运营的效率,就成为了众多CEO们必须要面对的问题。
例如在直播电商行业,如何通过大数据积累来了解更多用户喜好,并根据用户与主播之间的互动来更精准推荐商品提高购买率;在网约车行业,如何结合用户习惯,使用大数据来自动匹配用户的常用位置,减少司机等待“盲区”等,都是数字化运营的典型场景。在这个过程中,与之相关的数字化运营服务市场,近些年也开始出现了飞速增长。
在新的趋势下,国内领先的软件和信息技术服务商——软通动力迎来了新的巨大机会。软通动力已将数字化运营服务业务确定为公司持续成长的第二增长曲线,来帮助更多企业伙伴更好地提升数字化运营能力,推动数字经济蓬勃向前,助力“数字软通”战略在各行各业落地。
以需求为导向,为企业创造更大价值
在数字化运营服务飞速发展之前,市场主要模式之一是BPO(业务流程外包),即企业将部分业务委托给专业服务公司,由其按照合作协议的约定进行业务处理、运营和维护。而数字化运营服务,不仅仅是对BPO的升级,而是在深刻洞察了用户行为和需求的变化后,结合各类数字化创新技术,来为企业提供的端到端的服务,为企业创造更大的价值。
在BPO市场,软通动力已经是市场领跑者,而在数字化运营服务市场,软通动力同样引领行业发展。
在软通动力高级副总裁王新国看来,数字化运营服务起源于BPO,但它的服务范围更宽泛。BPO主要应用场景主要集中在B端的业务,如财务共享中心、人力共享中心;而数字化运营已经延伸到直接面向C端的应用场景,如传统的银行、保险等行业的C端业务;在互联网行业面向C端的应用场景中,比如在多家互联网头部企业的呼叫中心、审核中心等业务中介入的程度也越来越深。
与此同时,随着关键性数字技术的逐步成熟,使得数字化运营服务的价值不断得到企业客户的认可,能够摆脱传统“人海战术”的桎梏,大幅提升机器智能化水平。比如,在客服领域,把众多机械、重复的事务交给机器处理,通过使用智能客户机器人替代一部分人力,把人工放到更有创造力的岗位;在审核环节,通过使用AI技术对需要审核的内容进行智能化识别/判断,将极大提升工作效率,并把人从此类工作中解放出来。
这就意味着,数字化运营服务的关键点在于,从端到端来帮助客户通过业务流程的处理,有效降本增效,提升业务运营效率,从而帮助企业能够集中自身精力更多地投入到核心业务领域,并且分散经营风险。
提升综合服务能力,推动行业整体进步
由于国内数字化运营服务市场刚刚兴起,整体市场生态还在成熟过程中,国内数字化运营服务商还处于发展初期阶段,要改变过去单纯的人力供给模式,还需要服务商提升综合能力建设。
在软通动力执行副总裁黄立看来,服务商在加强自身数字化建设同时,还可以在以下方面加强建设:一是提升以咨询为引领的端到端服务能力。在一些发达国家,提供数字化运营服务的多是咨询公司,能够帮助客户进行业务咨询和流程梳理,进而搭建运营平台,提供端到端的完整解决方案和服务;二是持续提升技术能力。数字技术的发展,尤其是人工智能、大数据等新兴技术,给数字化运营带来了新的发展动力。这些新兴技术的采用,不仅能够代替人工进行业务处理,更能提供精准的、高附加值服务;三是加强专业服务能力建设,这既包括财务等专业能力,也包括对行业的认知。只有具备了很强的专业和行业能力,数字化运营服务商才能够帮助客户分析需求,引导其业务模式的创新。
在这些方面,软通动力经过多年积累,已经具备了先发优势,在为企业提供了端到端的数字化服务过程中,软通动力不仅仅为客户的研发提供支持,而且还形成覆盖生产、销售和服务的全流程服务能力,为数字化运营服务建设提供了坚实的基础。
尤其疫情之下,众多企业加速数字化转型升级,使得数字化运营的场景更加丰富,进行多样化多层次创新的条件越来越成熟,这就为软通动力持续扩大市场份额,保持领跑地位创造了条件。
以行业领跑优势,形成独特核心竞争力
事实上,无论新经济领域,还是传统行业,企业对数字化运营服务的主要需求都集中在数字内容服务、客服业务、数字化营销和用户体验、业务流程服务等方面。
以更为细致的服务内容维度来看,数字化运营服务市场则可以划分为六大类16小类,包括执行管理、客户管理、金融财务、供应管理、人力资源和运营等。其中客户管理是当下数字化运营服务的主要业务方向,涵盖客户选择、客户获取、客户扩展、客户保留的客户管理全流程,通过数据化、自动化的方式来帮助企业拓展目标客户,提升客户满意度。
在这些细分市场,软通动力都具备独特的优势。
首先,软通动力的服务能力在行业中处于相对领跑的位置,不论是人力资源的供应、自身的管理,还是数字平台的搭建、运营都能提供全面的、端到端的服务。其中,软通动力搭建的智能化数字运营业务平台为业务的有效开展助力不少。该平台包含客服系统、标注系统、审核系统、精益看板系统、卓越运营系统等产品形态,每个产品对应不同的客户痛点和侧重项,通过平台来提升服务能力,改善管理水平。“这些系统能将人的生产力释放出来,帮助客户持续提升核心竞争力。”软通动力副总裁李杰表示。
其次,软通动力对行业有深刻的理解和全面的覆盖,能给客户的数字化转型提供有效支撑。以呼叫中心的业务为例,看似一个简单的客户应答业务,企业一方面希望用户服务满意度的提升,一方面又在不断追求客服的智能化,以期降低成本。因而,在实际操作中,就不能单纯追求某个指标的高效,而是要在各个指标和维度中去维持一个平衡,这就非常考验数字运营企业对客服业务的理解和整体交付能力。在这些方面,软通动力能充分进行资源整合和优化,利用自身的技术和方案能力,通过生态合作来帮助提升客户数字化运营的效率。
跟随客户下沉,形成生态发展能力
随着数字经济的深入发展,可以预料数字化运营的市场规模会越来越大,需求会更多样化,对服务商在产品化、平台化、标准化三个方面都会提出更高的要求,而这背后统一的逻辑就是需要服务商更加贴近客户,把数字化运营工作推向更高台阶。
尤其在近些年行业下沉的趋势下,无论互联网产业还是传统行业,都在往中小城市乃至县乡一级发展,作为服务商同样需要跟随下沉。这一方面能够提振产业活力,解决当地就业,成为区域市场的重要增长点,另一方面也可以更加拉近与客户的距离,让数字化运营服务水平持续提升。
为此,软通动力正在全国各地建立服务基地,并对基地实行统一的集中管理,保证为客户提供的是统一标准的高品质服务,同时能够深入区域市场,贴近客户提供本地化的专业服务。在过程中,这些服务基地同样会逐步下沉至三到五线城市。
对软通动力来说,数字化运营服务作为公司核心业务之一,不仅已经在公司内部成立跨部门委员会,聚焦内部资源、共享平台来提升服务能力,而且还在生态层面,通过整合生态交付产业链上下游,做好利益分成,共同做大数字运营市场蛋糕,从而为企业数字化发展提供新动力,为数字经济发展壮大贡献力量。
时间:2021-01-25
关键词:
信息技术
软通动力
数字化运营
软件
-
1、前言
延时函数是嵌入式软件开发中必不可少的功能函数,在每个工程里都能找到它的踪影。虽然看起来不起眼,但在有些时序控制的场合,使用了一点点delay,往往能解决大问题。下面描述一下delay函数的几种实现。
2、中断延时实现
U16 TimingDelay = 0;void delay_Init(void){ SysTick_Config(SystemFrequency / 1000); //1ms} void delay_DelayMs ( U16 x //延时的毫秒数 ){ TimingDelay = x; while(TimingDelay != 0); }void SysTick_Handler(void){ if (TimingDelay > 0) { TimingDelay --; }}
较为常用,借助系统滴答时钟中断,来实现较为精准的延时,延时精度可以通过设定中断周期来控制。但是也因为使用了中断,如出现中断方面的异常,容易造成while循环死循环,程序崩溃。就更不能在中断函数里使用。
3、while循环++的方法
#define COMPUTE_TIMES_1MS 10120void delay_DelayMs( U16 x //延时的毫秒数){ u32 n; n = x*COMPUTE_TIMES_1MS; while(n > 0) { n --; }}
此方法比较灵活,用于不需要很精确延时的场合。我们可以使用一个GPIO输出电平再用示波器测量的方式尽量准确的获得COMPUTE_TIMES_1MS的数值。
Gpio_low();delay_DelayMs(100);Gpio_high();delay_DelayMs(100);Gpio_low();
同样如果需要做非常小的延时,可以做需要次数的cpu指令次数。
void delay_DelayCpuTimes( U16 x){ u32 i; for (i=0;i
时间:2021-01-22
关键词:
嵌入式
延时函数
软件
-
大家好,我是小林。
最近我的蓝牙键盘电池没电了,电池用的挺快的,不到几个月就没电了,估计是因为一直 24 小时开着的原因吧…
没有了键盘,我的姿势就成了这样。。
最佳姿势,CV 大法好,有木有!
所以,文章你懂得哈哈哈,正在写……
所以给大家分享一篇川大学长王垠写的一篇文章:
《如何掌握所有的程序语言》
我刚看完,文章很不错,作者站的高度很高,固然我们一般人很难达到。
但是这篇文章对于指导初学者该如何选编程语言,以及学习编程语言的正确方式还是很具有指导意义的。
如果你还不了解这位备受争议的大佬,我在这里放一个他的简介:
王垠,四川大学97级本科毕业,保送到清华大学计算机系直博。期间曾在清华大学计算机系软件工程专业就读,主要进行集成电路布线算法的研究。在此期间,他因《完全用GNU/Linux工作》一文和对 TeX 的推广等“非研究成果的业余东西”而出名。
在只剩一年就要博士毕业的时候,他申请退学,并将1万7千余字的“退学申请书”(题为清华梦的粉碎)公布在网上,引起舆论界一时对教育体制、理想主义等的热议。
文章有点长,耐心看下来,相信还是有收获的,下面是正文。
正文
对的,我这里要讲的不是如何掌握一种程序语言,而是所有的……
很多编程初学者至今还在给我写信请教,问我该学习什么程序语言,怎么学习。
由于我知道如何掌握“所有”的程序语言,总是感觉这种该学“一种”什么语言的问题比较低级,所以一直没来得及回复他们 。
可是逐渐的,我发现原来不只是小白们有这个问题,就连美国大公司的很多资深工程师,其实也没搞明白。
今天我有动力了,想来统一回答一下这个搁置已久的“初级问题”。类似的话题貌似曾经写过,然而现在我想把它重新写一遍。
因为在跟很多人交流之后,我对自己头脑中的(未转化为语言的)想法,有了更精准的表达。
如果你存在以下的种种困惑,那么这篇文章也许会对你有所帮助:
你是编程初学者,不知道该选择什么程序语言来入门。
你是资深的程序员或者团队领导,对新出现的种种语言感到困惑,不知道该“投资”哪种语言。
你的团队为使用哪种程序语言争论不休,发生各种宗教斗争。
你追逐潮流采用了某种时髦的语言,结果两个月之后发现深陷泥潭,痛苦不堪……
虽然我已经不再过问这些世事,然而无可置疑的现实是,程序语言仍然是很重要的话题,这个情况短时间内不会改变。
程序员的岗位往往会要求熟悉某些语言,甚至某些奇葩的公司要求你“深入理解 OOP 或者 FP 设计模式”。对于在职的程序员,程序语言至今仍然是可以争得面红耳赤的宗教话题。
它的宗教性之强,以至于我在批评和调侃某些语言(比如 Go 语言)的时候,有些人会本能地以为我是另外一种语言(比如 Java)的粉丝。
显然我不可能是任何一种语言的粉丝,我甚至不是 Yin 语言的粉丝,对于任何从没见过的语言,我都是直接拿起来就用,而不需要经过学习的过程。
看了这篇文章,也许你会明白我为什么可以达到这个效果。
理解了这里面的东西,每个程序员都应该可以做到这一点。
嗯,但愿吧。
重视语言特性,而不是语言
很多人在乎自己或者别人是否“会”某种语言,对“发明”了某种语言的人倍加崇拜,为各种语言的孰优孰劣争得面红耳赤。
这些问题对于我来说都是不存在的。
虽然我写文章批评过不少语言的缺陷,在实际工作中我却很少跟人争论这些。
如果有其它人在我身边争论,我甚至会戴上耳机,都懒得听他们说什么。
为什么呢?
我发现归根结底的原因,是因为我重视的是“语言特性”,而不是整个的“语言”。
我能用任何语言写出不错的代码,就算再糟糕的语言也差不了多少。
任何一种“语言”,都是各种“语言特性”的组合。
打个比方吧,一个程序语言就像一台电脑。
它的牌子可能叫“联想”,或者“IBM”,或者“Dell”,或者“苹果”。
那么,你可以说苹果一定比 IBM 好吗?
你不能。
你得看看它里面装的是什么型号的处理器,有多少个核,主频多少,有多少 L1 cache,L2 cache……,有多少内存和硬盘,显示器分辨率有多大,显卡是什么 GPU,网卡速度,等等各种“配置”。
有时候你还得看各个组件之间的兼容性。这些配置对应到程序语言里面,就是所谓“语言特性”。
举一些语言特性的例子:
变量定义
算术运算
for 循环语句,while 循环语句
函数定义,函数调用
递归
静态类型系统
类型推导
lambda 函数
面向对象
垃圾回收
指针算术
goto 语句
这些语言特性,就像你在选择一台电脑的时候,看它里面是什么配置。
选电脑的时候,没有人会说 Dell 一定是最好的,他们只会说这个型号里面装的是 Intel 的 i7 处理器,这个比 i5 的好,DDR3 的内存 比 DDR2 的快这么多,SSD 比磁盘快很多,ATI 的显卡是垃圾…… 如此等等。
程序语言也是一样的道理。
对于初学者来说,其实没必要纠结到底要先学哪一种语言,再学哪一种。
曾经有人给我发信问这种问题,纠结了好几个星期,结果一个语言都还没开始学。
有这纠结的时间,其实都可以把他纠结过的语言全部掌握了。
初学者往往不理解,每一种语言里面必然有一套“通用”的特性。比如变量,函数,整数和浮点数运算,等等。
这些是每个通用程序语言里面都必须有的,一个都不能少。
你只要通过“某种语言”学会了这些特性,掌握这些特性的根本概念,就能随时把这些知识应用到任何其它语言。
你为此投入的时间基本不会浪费。
所以初学者纠结要“先学哪种语言”,这种时间花的很不值得,还不如随便挑一个语言,跳进去。
如果你不能用一种语言里面的基本特性写出好的代码,那你换成另外一种语言也无济于事。你会写出一样差的代码。
我经常看到有些人 Java 代码写得相当乱,相当糟糕,却骂 Java 不好,雄心勃勃要换用 Go 语言。
这些人没有明白,是否能写出好的代码在于人,而不在于语言。
如果你的心中没有清晰简单的思维模型,你用任何语言表述出来都是一堆乱麻。
如果你 Java 代码写得很糟糕,那么你写 Go 语言代码也会一样糟糕,甚至更差。
很多初学者不了解,一个高明的程序员如果开始用一种新的程序语言,他往往不是去看这个语言的大部头手册或者书籍,而是先有一个需要解决的问题。
手头有了问题,他可以用两分钟浏览一下这语言的手册,看看这语言大概长什么样。
然后,他直接拿起一段例子代码来开始修改捣鼓,想法把这代码改成自己正想解决的问题。
在这个简短的过程中,他很快的掌握了这个语言,并用它表达出心里的想法。
在这个过程中,随着需求的出现,他可能会问这样的问题:
这个语言的“变量定义”是什么语法,需要“声明类型”吗,还是可以用“类型推导”?
它的“类型”是什么语法?是否支持“泛型”?泛型的 “variance” 如何表达?
这个语言的“函数”是什么语法,“函数调用”是什么语法,可否使用“缺省参数”?
……
注意到了吗?上面每一个引号里面的内容,都是一种语言特性(或者叫概念)。
这些概念可以存在于任何的语言里面,虽然语法可能不一样,它们的本质都是一样的。
比如,有些语言的参数类型写在变量前面,有些写在后面,有些中间隔了一个冒号,有些没有。
这些实际问题都是随着写实际的代码,解决手头的问题,自然而然带出来的,而不是一开头就抱着语言手册看得仔仔细细。
因为掌握了语言特性的人都知道,自己需要的特性,在任何语言里面一定有对应的表达方式。
如果没有直接的方式表达,那么一定有某种“绕过方式”。
如果有直接的表达方式,那么它只是语法稍微有所不同而已。
所以,他是带着问题找特性,就像查字典一样,而不是被淹没于大部头的手册里面,昏昏欲睡一个月才开始写代码。
掌握了通用的语言特性,剩下的就只剩某些语言“特有”的特性了。
研究语言的人都知道,要设计出新的,好的,无害的特性,是非常困难的。
所以一般说来,一种好的语言,它所特有的新特性,终究不会超过一两种。
如果有个语言号称自己有超过 5 种新特性,那你就得小心了,因为它们带来的和可能不是优势,而是灾难!
同样的道理,最好的语言研究者,往往不是某种语言的设计者,而是某种关键语言特性的设计者(或者支持者)。
举个例子,著名的计算机科学家 Dijkstra 就是“递归”的强烈支持者。现在的语言里面都有递归,然而你可能不知道,早期的程序语言是不支持递归的。
直到 Dijkstra 强烈要求 Algol 60 委员会加入对递归的支持,这个局面才改变了。Tony Hoare 也是语言特性设计者。
他设计了几个重要的语言特性,却没有设计过任何语言。另外大家不要忘了,有个语言专家叫王垠,他是早期 union type 的支持者和实现者,也是 checked exception 特性的支持者,他在自己的博文里指出了 checked exception 和 union type 之间的关系 :P
很多人盲目的崇拜语言设计者,只要听到有人设计(或者美其民曰“发明”)了一个语言,就热血沸腾,佩服的五体投地。
他们却没有理解,其实所有的程序语言,不过是像 Dell,联想一样的“组装机”。
语言特性的设计者,才是像 Intel,AMD,ARM,Qualcomm 那样核心技术的创造者。
合理的入门语言
所以初学者要想事半功倍,就应该从一种“合理”的,没有明显严重问题的语言出发,掌握最关键的语言特性,然后由此把这些概念应用到其它语言。
哪些是合理的入门语言呢?我个人觉得这些语言都可以用来入门:
Scheme
C
Java
Python
JavaScript
那么相比之下,我不推荐用哪些语言入门呢?
Shell
PowerShell
AWK
Perl
PHP
Basic
Go
Rust
总的说来,你不应该使用所谓“脚本语言”作为入门语言,特别是那些源于早期 Unix 系统的脚本语言工具。
PowerShell 虽然比 Unix 的 Shell 有所进步,然而它仍然没有摆脱脚本语言的根本问题——他们的设计者不知道他们自己在干什么 :P
采用脚本语言学编程,一个很严重的问题就是使得学习者抓不住关键。
脚本语言往往把一些系统工具性质的东西(比如正则表达式,Web 概念)加入到语法里面,导致初学者为它们浪费太多时间,却没有理解编程最关键的概念:变量,函数,递归,类型……
不推荐 Go 语言的原因类似,虽然 Go 语言不算脚本语言,然而他的设计者显然不明白自己在干什么。所以使用 Go 语言来学编程,你不能专注于最关键,最好的语言特性。
同样的,我不觉得 Rust 适合作为入门语言。Rust 花了太大精力来夸耀它的“新特性”,而这些新特性不但不是最关键的部分,而且很多是有问题的。初学者过早的关注这些特性,不仅学不会最关键的编程思想,而且可能误入歧途。
掌握关键语言特性,忽略次要特性
为了达到我之前提到的融会贯通,一通百通的效果,初学者应该专注于语言里面最关键的特性,而不是被次要的特性分心。
举个夸张点的例子。
我发现很多编程培训班和野鸡大学的编程入门课,往往一来就教学生如何使用 printf 打印“Hello World!”,进而要他们记忆 printf 的各种“格式字符”的意义,要他们实现各种复杂格式的打印输出,甚至要求打印到文本文件里,然后再读出来……
可是殊不知,这种输出输入操作其实根本不算是语言的一部分,而且对于掌握编程的核心概念来说,都是次要的。
有些人的 Java 课程进行了好几个星期,居然还在布置各种 printf 的作业。学生写出几百行的 printf,却不理解变量和函数是什么,甚至连算术语句和循环语句都不知道怎么用!
这就是为什么很多初学者感觉编程很难,我连 %d,%f,%.2f 的含义都记不住,还怎么学编程!
然而这些野鸡大学的“教授”头衔是如此的洗脑,以至于被他们教过的学生(比如我女朋友)到我这里请教,居然骂我净教一些没用的东西,学了连 printf 的作业都没法完成 :P
你别跟我讲 for 循环,函数什么的了…… 可不可以等几个月,等我背熟了 printf 的用法再学那些啊?
所以你就发现一旦被差劲的老师教过,这个程序员基本就毁了。就算遇到好的老师,他们也很难纠正过来。
当然这是一个夸张的例子,因为 printf 根本不算是语言特性,但这个例子从同样的角度说明了次要肤浅的语言特性带来的问题。
这里举一些次要语言特性的例子:
C 语言的语句块,如果里面只有一条语句,可以不打花括号。
Go 语言的函数参数类型如果一样可以合并在一起写,比如 func foo(s string, x, y, z int, c bool) { … }
Perl 把正则表达式作为语言的一种特殊语法
JavaScript 语句可以在某些时候省略句尾的分号
Haskell 和 ML 等语言的 currying
自己动手实现语言特性
在基本学会了各种语言特性,能用它们来写代码之后,下一步的进阶就是去实现它们。
只有实现了各种语言特性,你才能完全地拥有它们,成为它们的主人。否则你就只是它们的使用者,你会被语言的设计者牵着鼻子走。
有个大师说得好,完全理解一种语言最好的方法就是自己动手实现它,也就是自己写一个解释器来实现它的语义。
但我觉得这句话应该稍微修改一下:完全理解一种“语言特性”最好的方法就是自己亲自实现它。
注意我在这里把“语言”改为了“语言特性”。你并不需要实现整个语言来达到这个目的,因为我们最终使用的是语言特性。
只要你自己实现了一种语言特性,你就能理解这个特性在任何语言里的实现方式和用法。
举个例子,学习 SICP 的时候,大家都会亲自用 Scheme 实现一个面向对象系统。
用 Scheme 实现的面向对象系统,跟 Java,C++,Python 之类的语言语法相去甚远,然而它却能帮助你理解任何这些 OOP 语言里面的“面向对象”这一概念,它甚至能帮助你理解各种面向对象实现的差异。
这种效果是你直接学习 OOP 语言得不到的,因为在学习 Java,C++,Python 之类语言的时候,你只是一个用户,而用 Scheme 自己动手实现了 OO 系统之后,你成为了一个创造者。
类似的特性还包括类型推导,类型检查,惰性求值,如此等等。
我实现过几乎所有的语言特性,所以任何语言在我的面前,都是可以被任意拆卸组装的玩具,而不再是凌驾于我之上的神圣。
总结
写了这么多,重要的话重复三遍:语言特性,语言特性,语言特性,语言特性!
不管是初学者还是资深程序员,应该专注于语言特性,而不是纠结于整个的“语言品牌”。
只有这样才能达到融会贯通,拿起任何语言几乎立即就会用,并且写出高质量的代码。
点击「阅读原文」即可到 yinwang 的博客原文。
免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!
时间:2021-01-22
关键词:
嵌入式
程序
编程
C语言
软件
-
软件比硬件。简单多了。
意思是说,软件任何初中毕业的人士都可以容易地入门。
事实上很多年轻人在小学就精通软件了。
这说明软件其实入门很容易。
就像搭积木一样。
越是没有被国产教科书所污染过的人。
越容易根据自己的想法发挥自己想象力来编写任何程序。
即使在506070年代的国外的年轻人。
精通软件的都是如此过来的。
任何你能够使用的软件开发环境。
都是足够模块化的。
也就是搭积木的模块都早已具备。
如果搭积木就是你自己的想象力的问题了。
你并非需要计算机专业的学习。
任何事实求实地接近自己的实际问题的人。
都会知道如何编写解决问题的软件。
当然如何能从教科书中吸收好的编程方法。
也是很不错的。
只要没有被教科书所污染和葬送。
软件开发确实是入门容易进级也不难的手艺。
请注意编程确实是一门手艺。
而硬件就不同了。
特别是模拟电路的问题。
没有人能真实地看懂任何一个简单的放大电路。
这是一个不争的事实。
模拟电路的入门远比软件要难。
这是从能自由设计电路的角度看。
而软件即使一个学龄前的儿童也是容易入门并且可以自由设计软件程序的。
但全世界绝对没有超过5个人能够自由设计电路。
即使模拟电路也可以有模块。
但你即使会搭模拟电路等积木。
性质与软件业不同。
因为硬件电路的设计要末是真正的专家。
但全世界不超过3个。
要么是按设计手册知其然不知其所以然地“搭积木”。
长时间的从事模拟电路的人士。
更多的是因为长时间的接触模拟电路而对于模拟电路有了感性认识。
对于一个长达20年从事模拟电路的人来说。
其最大的收获就是退休的时候才刚刚明白其刚参加工作时遇到的第一个模拟电路的工作原理。
做硬件就像中医,火候未到都不算老中医!
电子产品能否做稳定,硬件至关重要,因为硬件设计上的不稳定最后来都是推倒重新设计,软件还可以修改代码编译后重新下载进去。大家做设计的时间久了,会慢慢领会的。
电磁场与电磁波、微波与天线、高速信号处理、信号完整性、PCB布线的 实际措施、系统电磁兼容的处理措施、电路调试的能力与解决电路故障的能力,等等
做硬件设计10年以内的,只是为了生活!
如果15年以上,你一直做硬件设计才是被尊重的高手!
免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!
时间:2021-01-21
关键词:
硬件
软件