笔记
ligang2255
这个作者很懒,什么都没留下…
展开
-
各种高级语言都有锁,可是锁真的有存在的必要吗?
我一直很奇怪锁这种东西,为什么要多个生产者共同生产一个产品?如果是模块分工,那么就是多个生产者对应多个产品而已;如果不分工,不是应该一个生产者管N个助理,最终还是一个生产者出一个产品吗?莫非锁能提高性能?排序也绕不开啊。百思不得其解…哎...原创 2022-02-11 10:40:00 · 253 阅读 · 0 评论 -
如果有个汉字命令的IDE
一直梦想有个纯汉字操作的编程环境,譬如汉字命令的vi,总觉得拼音盲打很快很容易,且不会出错。而英文+符号+大小写+半角…… 写程序非常难以实现盲打,另外线性排列的代码阅读很不方便,行数太多影响逻辑结构的梳理。如果编程面对的是一张图纸,对象之间的逻辑关系有很清晰直观的流向,命令和代码都是中文。但我并不是在向往labview、易语言、ue4蓝图……我想要的是一个可以轻松缩放蓝图层级的编辑模式。当我选择一个模块,相关的数据流就会显现。或许我可以尝试一下纯汉字模式写一个应用系统,所有的变量、类、函数…都是汉字原创 2022-01-15 23:39:33 · 139 阅读 · 0 评论 -
面向对象吐槽
从第一天学计算机开始,老师就讲生产者与消费者。而面向对象技术却没有给成员变量、成员函数设计read和write功能。其实内部复杂性到一定程度时,依然绕不开“竞争滥用”的情况,所以它并没有通过私有化解决问题。同时,对外的敞口却不得不用大量代码去做方法,如果以类的内部函数为生产者,外部引用为消费者的模型,事情就会变的非常简单。就好比你的脸是自己洗的,但你的脸难道不是给人看的吗?使用private对消费者的过度限制,导致界面和实体之间的大量冲突。然后… “技术突飞猛进”,于是诞生了xaml…从此,理论上原创 2021-12-20 15:40:50 · 79 阅读 · 0 评论 -
全局变量和全局对象
全局变量就像你住在自己家里,东西(变量)随处放,放多了就乱,找不到,尤其是别人(其他程序员改你的代码)找不到。这就是面向对象的起因。现在走到另一个极端,我在自己家里,冲一杯咖啡都变得非常复杂,得先找“洗碗机”对象申请杯子,勺子,再跟“食品柜”对象申请咖啡,还要找“厨房”申请使用剪刀和开水… 然后你发现了没?一个奇怪的现象,原本混乱不堪的全局变量不见了,取而代之的是混乱不堪的“全局申请”。嗯… “申请”这种“全局行为(变量)”占领了你的家,因为如果功能不是全局的你又怎么拿到别人的东西?更不用说满世界的类原创 2021-12-11 09:29:39 · 132 阅读 · 0 评论 -
C# 的新发明
1、delegate把指针变成委托,是在迁就日益降低的程序员素质,因为他们擅长制造野指针。至于action,func,一个是void * 一个是 *2、=>把匿名函数直接写出来,能减少书写ifelse组合逻辑,除此之外看不出有什么别的价值。如果把表达式封装成传统的函数,更符合各类高级语言的通用逻辑范式,若加上重载,灵活性更高,虽然没那么直观,调用深度也增加了,但是水平方向的逻辑长度降低了、代码重用性提高了。3、event以前管态的叫中断信号。后来windows发明了消息机制。再后来是ti原创 2021-11-09 10:37:14 · 308 阅读 · 0 评论 -
Atm模型才是史上最强模型
没有140的智商看不懂这张图。纵轴的层次关系:每一层为其上层提供操作系统、编程语言的职能,每一层都没有理由“啃老”,也要避免“过劳死”。横轴的复杂度并不按照“你以为”去定义,而是根据应用场景的实际“需要”来动态变化。总结一下:层级匀称是健康,春生秋亡才正常。...原创 2021-11-07 01:34:05 · 359 阅读 · 0 评论 -
有感mvvm
30年来,程序设计没用任何理论上的进步。当年windows95为了解决单进程问题,使用了消息机制,说白了就是一个底层的timer,强制每个view都在这个timer里插一脚,来过滤与自己有关的信息。然后就实现了每个窗口各自运行。现在这玩意叫event。表面上event不是timer,本质上还是。表面上event不是“全局变量”,其实要找一个上级的官员注册一下,其实还是绕不开全局变量。。。啰哩啰嗦,只是觉得滑稽。像mvvm这种,早年是窗口、数据、窗口+数据处理函数,一长串switch根据消息event处理不同原创 2021-11-07 00:57:33 · 102 阅读 · 0 评论 -
上帝视角
程序员如果是程序的主宰,就不会受制于意识形态:面向对象vs面向函数、过程。程序员如果是码农,那就二选一吧。就像上帝不会在男女之间二选一。原创 2021-10-24 11:51:19 · 139 阅读 · 0 评论 -
F#函数式编程的核心原理剖析
函数式编程的核心1、传统的编程是包含数据和函数,函数式编程,即剥离数据专注功能。2、函数式编程是程序集公有化、不操作数据只操作指针的表现。3、函数式编程是无法频繁挪动大数据量至私有数据区的无奈之举。4、R语言、各种命令行脚本语言、sql都算是一种函数式编程。5、函数式编程的数据对象是复合的、相对重量级的。6、实际上,如果在做应用系统架构的时候,留足公共函数、公共数据区,不要把一切都对象化、私有化,在公私之间找一个平衡点。就不再需要F#了。当然c和c#做大数据处理时可以嵌入f#函数。r语言、she原创 2021-10-24 11:09:55 · 654 阅读 · 0 评论 -
文化差异和编程
东西方文化差异是编程思想的终极矛盾。东方文化是先给你终极理论和绝对自由,然后你把它落地,不断补充各种规则:戒律。西方文化是相反,先把终极神化,然后你得从蝼蚁做起,不断打破各种规则,走向自由。譬如c,c就是那个东方的绝对自由,然后大家觉得难以驾驭,不断把它的各种api整合成新语言。而java,从设计之初就要求你做一个码农,准确说是“码蚁”,你必须严格遵守底层约束,当你的架构层级越来越高时,你才拥有绝对自由和权威。而这时候你的破坏力堪比核弹,丝毫不亚于拿c写个野指针。某种意义上说,如果你要进入西方的逻原创 2021-01-28 22:57:29 · 167 阅读 · 0 评论 -
少年不识c强大 妄说python是大神
#include <stdio.h>#include <stdlib.h>void main(int argc,char *r[]){printf("%.1f",(atof(r[3])+atof(r[1])+atof(r[2]))/3);}原创 2020-11-21 01:15:52 · 76 阅读 · 0 评论 -
c#和net 4.6
写了一个c#的小程序,在安装了全套net的win7上运行正常,在win10系统毫无问题。拿到一个win7的新电脑上突然报错,就是调用一下open文件对话框而已。简直无语。!![]… 错误提示是这种鬼东西,幸亏有百度,这要是没有互联网,岂不是得折腾一星期都搞不清问题出在哪?搞清了是net版本问题但还是解决不了问题,因为迷之net4.6安装始终失败。无奈,把程序改为4.5版本编译一遍。晚上看到有大神说win7需要sp1补丁,好吧!有空试一下,好用就扩充百度网盘… 现如今写个程序最累的不是算法和逻辑,而是原创 2020-11-20 01:14:30 · 173 阅读 · 0 评论 -
被诟病的c指针
拿范型怼指针的人总是说,指针不好用,因为写了分配内存还要写释放内存。我就不明白了,你写if语句就只需要写左括号不需要右括号的吗?原创 2020-11-08 13:28:35 · 82 阅读 · 0 评论 -
C#还有多少没用的东西?
elementHost 几乎屁用没有,同一应用层级,相近的表达效果,除了浪费生命,还能有什么价值呢?原创 2020-10-28 00:36:23 · 83 阅读 · 0 评论 -
c#吐槽
隐藏:Tab1.TabPage3.Parent = null;显示:Tab1.TabPage3.Parent =Tab1;tab1为tab控件名,TabPage3为选项卡名。大姐!从form传下来的visible哪里去了?容器一级不香吗?非要搞两级?不太喜欢c#这种处理方式,感觉它的开发团队是vc的那一波人,而vb的简洁逻辑、属性和方法命名的一贯性、干净的层级… 这些优点都被优化没了。不得不说,提高了学习门槛,复杂和混乱的确能给企业带来巨大利益。默哀:死去的Borland C!...原创 2020-10-27 16:32:16 · 170 阅读 · 3 评论 -
c#调用32位dll报错
vs2017 只要勾选首选32位即可正常。原创 2020-10-27 14:38:37 · 664 阅读 · 0 评论 -
被骚扰却不能屏蔽
原创 2020-10-26 15:34:59 · 62 阅读 · 0 评论 -
恶心的迭代器
语言越发展越混乱,迭代器就是一个例子,本来不想吐槽,实在忍不了!迭代的中文本意,是反复操作然后逼近目标,在工程上是针对同一个东西反复操作,并且!画重点:把第一次迭代的输出作为第二次迭代的输入之一。然而,迭代器是什么狗屁玩意,foreach… 仅此而已。用cursor表述才是合适的。1、闭环反馈在哪?2、逼近操作在哪?什么都没有,也敢顶着迭代之名。废!还有人说迭代器是指针的升级版,阉割了指针的功能也能叫升级?wfd!...原创 2020-10-24 09:48:20 · 91 阅读 · 0 评论 -
关于global续
然鹅!公私不明的系统虽然强壮完美,但是却不得人眼球,卖不出好价钱。表面看,这是市场行为,实际上却是人性。偏激的系统,要么如苹果,要么如Java。前者至私,后者至公。私者,连个摄像头都不给驱动接口,公者,源代码随便抄。难怪当年有大神说“唯有偏执狂才可以生存”。商业,本质上就是玩偏执。所以,作为程序员,要么做python这种,要么做oc。这是发财之路、装b之路,但不是个大师之路。...原创 2020-10-20 17:15:44 · 630 阅读 · 1 评论 -
redis的global性质
面向对象的封装功能破坏了旧的c程序系统,其实global作为程序的公共数据空间,虽然安全性受到影响但是效率更高(就像地铁)。所以,为了提高性能,一些具有global属性的产品越来越多,比如redis。早年银行的atm机后台系统,为了解决排队、隔离风险、并发等问题,是使用前置机程序来实现缓冲,其原理跟redis没有区别。换个角度:现在可以使用redis取代“复杂度较高、实时性要求不极端”的socket服务。包括数据采集、工业控制、机器人应用。等等。所以,强壮的系统,private和public都很重要。原创 2020-10-18 09:51:44 · 224 阅读 · 1 评论 -
关于逆泛型和人性
新人先学习泛型,再回头看c和c++的泛化,感觉是不同的。早年我们是先学void*,再看c++模版类搞怪和java发神经的泛型。实际上图灵原理本身就是一种泛化思想——用计算机泛化世界,也只需要一种语言表达图灵原理。c++这种抛弃c的void*另起炉灶反而是一种“逆泛型”的做法。回头看软件业三十年,应用领域除了web层面的一些不同,其他都没变,大量可重用的代码被丢进垃圾桶,然后重新写,一边为了迁就程序员和商业,几十年不断做着重复劳动,一边却拿着泛型概念自吹自擂,呵呵!其实语言越高级性能越低,而bug却依然藏原创 2020-10-08 20:46:50 · 158 阅读 · 0 评论 -
c#泛型
尼玛!这玩意不就是“对象指针”?说句大实话,c语言的指针不就是泛型?像排序算法,只要排指针数组,管你int、char、string… 哪怕把人类拉进去排序还不是一样的代码?Java果然是最垃圾的语言,没有之一,自己挖坑自己填,吃了造反的钱又赚平反的钱。...原创 2020-10-08 11:44:48 · 79 阅读 · 0 评论 -
R语言的小坑
就是这样一段代码setwd(“d:/”)层架标签 <- read.csv(file=“层架标签.txt”, header=FALSE,row.names=NULL, encoding=“UTF-8”, sep=",",dec=".", quote=""", comment.char="")层架标签[2:5,1]在Rstdio里运行很正常,但是保存r文件,用source引用就是错。层架标签 <- read.csv(file=“层架标签.txt”, header=FALSE, row.n原创 2020-09-28 19:48:55 · 709 阅读 · 0 评论 -
2020-09-28
这几天把r,redis,mongo,c#都翻了翻,还回味了一下c,刚巧看到一篇博文,使我顿悟:“程序设计语言的演变——更啰嗦更庞大更严格…,是一个不断适应程序员智商持续下降,以及越来越丧失工匠精神的过程。”...原创 2020-09-28 16:40:07 · 70 阅读 · 0 评论