RAD与non-RAD

PowerBuilder调用C++ DLL实战:原理、方案与避坑指南 动态链接库(DLL)是Windows平台上实现代码复用和功能扩展的核心技术,它允许不同编程语言编写的模块相互调用。其原理在于通过导出函数和标准调用约定,实现二进制级别的互操作性。这项技术的核心价值在于能够将高级语言的快速开发能力与底层语言的高性能及系统级控制能力相结合,从而突破单一语言的技术限制。在实际应用中,它常用于解决诸如复杂算法加速、系统API调用、特定文件格式处理(如Excel导出时保留前导零)以及性能优化等场景。本文以PowerBuilder(PB)调用C++ DLL为例,深入探讨了如何通过声明外 阅读详情

RAD与non-RAD
         申 旻 2002年7月于珠海
   似乎说到Delphi,就会谈到这个话题。不错,Delphi是RAD(Rapid Application Development,快速应用开发工具)。
   VB的出现掀起了一场编程方式的革命,它带来了可视化编程,一种无数程序员所梦想的编程方式。但从此,也给人留下了这样的印象--RAD就是“搭积木”。这也让一些“高手”对RAD不屑一顾。很多初学者感觉VB好用,立刻就可以写出一个能看得上眼的程序,但在学习、使用一段时间后,便感觉无从更进一步了。于是,又责怪RAD太过于简单。甚至许多熟练的Delphi程序员都会有着类似的担心,RAD是不是难登大雅之堂?
或许,用VB进行开发,的确可以算是“搭积木”。但是,请不要认为这就是RAD的全部。而且,Delphi绝对不等同于VB!
首先,RAD是提高生产效率的工具。工具是被人们用来解决实际问题的,而不是用来炫耀或作为理论来学习的。好的工具应该可以帮助使用者快速、有效地达成目的,那么,RAD正是扮演了这样一个角色。它让你能够专注于问题的重点,用别人写好的、经过大量使用测试的现成控件按照项目的业务逻辑,组装成符合客户需要的软件产品,既保证了开发速度,又提高了质量(可以近似认为现成的控件是零bug的)。从这个意义上来说,“搭积木”的开发方式是有存在的价值的,这也是全世界程序员所梦想的“模块化”的一种形式。“搭积木”本身并没有错,RAD并没有错。
其次,RAD是工业的开发工具,不是学习工具。众所周知,RAD简单易用,初学者一接触到RAD,就仿佛找到了学习的捷径。但是,最终可能会让这些人丧气,因为简单易用的背后,是需要扎实的基础作为依托的。RAD出现的初衷就是让开发者不必考虑太多的恼人的细节,但并非不需要相关的基础理论的支持。例如,当用Delphi开发基于TCP协议的网络应用时,你不必知道TCP包的格式,但是,如果连IP地址都不知道是何物,纵使有RAD也无补于事,而且,知道得越多,在出问题时就越容易解决。RAD的简单易用只是降低了开发人员在尝试使用RAD时的学习曲线。又如,假设精通Windows环境下的SDK编程,能脱口而出所需要的Win32 API,于是,当你使用Delphi时,就不会有什么困难,至多熟悉一下VCL是如何封装这些API就可以了。如果Delphi是非常难学难懂的开发工具,你会耗费精力去用它吗?不如直接用SDK开发了。如果将掌握RAD本身作为学习目标的话,那么你注定至多只是个业余的编程爱好者而已(没有贬低爱好者的意思,只是相对于专业程序员而言)。在此,笔者有一些题外话,这就是经常可以听到有人说现在大学计算机专业学习的内容与实际需要脱节之类的话。其实如何才算不脱节呢?真的要学校教VB、VC、Delphi才算不脱节?如果真是这样的话,VB、VC、Delphi都淘汰了怎么办?那才是真正的悲哀呢。言归正传,所以,RAD不是学习的捷径,RAD是实现的利器。
最后,RAD和non-RAD是互补的。RAD和non-RAD有着不同的适合领域,拥有各自的存在原因和拥护群体,它们的存在并没有冲突,也不必人为地将它们对立起来。常可见non-RAD的使用者嘲笑RAD的使用者“低阶”,其实这些所谓“高手”只是眼高而已。使用VC的一定比使用VB的人“高阶”?项目中使用什么编程语言、开发工具,时常并不是你个人所能左右的,会受很多因素制约。例如,客户的硬件环境、操作系统环境,开发环境,开发工具的成本、许可证等,所以使用什么工具说明不了问题。况且,专业程序员不应该是忠于开发工具,而是应该忠于自己的编程理念。一个人只会说“最喜爱XX开发工具”,“最熟悉XX开发工具”,绝不会说“我是使用XX开发工具的”。所以,RAD并不等于低阶,non-RAD并不意味着高人一等。RAD和non-RAD的存在,并不冲突。个人水准的高低,也不是通过所使用的工具来表现的。
很多刚入门的编程爱好者,摆弄了几天VB或Delphi或C++Builder,拖拉几个控件弄出个EXE之后,便宣称自己已经学会了编程,这就有些盲目了。这也是为什么RAD会被人误会的原因之一。不可否认,RAD的出现,使得编程的门槛变低了。但是,入了门槛并不等于都掌握了,程序设计本身是一门博大精深的学问,做学问最重要的就是严谨、踏实。
   另外,虽然Borland一直宣称Delphi是RAD,但其实完全可以把Delphi 当作non-RAD的开发工具来用(即纯Object Pascal编译器),这也是其提供的自由度的一个表现吧!

 

 

Shellcode手工编写与自动化工具对比:从汇编原理到实战应用 Shellcode作为一段不依赖外部库、可直接在内存中执行的机器码,是安全研究、渗透测试和漏洞利用中的核心概念。其原理在于通过精心构造的指令序列,直接调用操作系统内核功能,实现进程控制、权限提升等目标。这种技术价值在于能够绕过传统安全防护机制,在受限环境中执行任意代码。在应用场景上,Shellcode广泛用于渗透测试、红蓝对抗、漏洞利用开发和恶意软件分析。无论是追求极致精简和可控性的手工编写,还是注重功能集成和工程化的自动化工具生成,都需要深入理解系统调用、内存布局和指令集架构。本文聚焦于Shellcode 阅读详情

相关推荐

MIPSsim模拟器初探:从零搭建指令级仿真实验环境

本文详细介绍了MIPSsim模拟器的安装、配置与使用指南,帮助初学者从零搭建指令级仿真实验环境。通过单步执行指令、观察寄存器变化等实操演示,深入理解计算机体系结构中的核心概念如流水线、分支预测等。文章还提供了常见问题排查和进阶调试技巧,适合计算机专业学生和爱好者快速上手MIPS架构仿真。

weixin_30924239的博客 205

【文献分享】Nonrad 程序:根据第一原理计算非辐射捕获系数

我们介绍了Nonrad实现 Alkauskas 等人的第一性原理方法的代码。最后,我们通过与直接数值评估进行比较来评估使用 Sommerfeld 参数的解析近似的准确性。我们的代码是用 Python 语言编写的,实现了 Alkauskas 等人开发的第一性原理方法。非辐射捕获率是使用一维方法计算的,该方法将非常大的声子问题映射到单个有效的声子模式上。半导体和绝缘体中点缺陷处的非辐射载流子捕获会显着影响器件的性能。计算非辐射捕获率的第一性原理方法对于指导材料设计和提供对非辐射捕获过程的原子洞察是必要的。

nmrwxw的博客 709

Ubuntu 基础配置 (WSL2)和操作命令

在 WSL2 Ubuntu 环境中,通过更新系统、配置时区与语言环境、安装常用工具(如 git、vim、htop)提升开发效率。可选配置 OpenSSH 服务器并设置自启动(推荐使用 systemd 或 Windows 任务计划程序),实现远程连接。建议优先使用 VS Code Remote - WSL 插件进行无缝远程开发,避免手动 SSH 配置,简化流程并增强安全性。

人生是一场修行 30

Flink 学习日志 03:自定义一个SourceFunction,完成对Redis中数据的读取

本文介绍了在Flink中自定义SourceFunction读取Redis数据的完整流程:通过Jedis客户端连接WSL2中的Redis服务,编写RedisSource实现循环读取所有Key-value并逐条输出,结合Thread.sleep()实现每秒一条的流式效果。关键步骤包括环境准备、添加Jedis依赖、配置IDEA运行时加载provided依赖,并注意生产环境中应避免使用阻塞的keys *,改用scan命令。最终实现动态读取、实时打印,验证了Flink与Redis的数据集成能力。

木木的学习笔记 418

XY2-100协议解析

1.XY2-100包括四路信号 : SENDCK(时钟信号)、SYNC(同步信号)、CHANNELX(X通道)、CHANNELY(Y通道)

qq_38360574的博客 9531

DETRs with Collaborative Hybrid Assignments Training论文阅读与代码

在这篇论文中,作者观察到在DETR中将过少的 Query 分配为正样本,采用一对一的集合匹配,会导致对编码器输出的监督稀疏,严重损害编码器的区分特征学习,反之亦然,也会影响解码器中的注意力学习。为了缓解这个问题,作者提出了一种新颖的协同混合分配训练方案,名为Co-DETR,以从多样的标签分配方式中学习更高效、更有效的基于DETR的检测器。这种新的训练方案可以通过训练多个并行辅助 Head ,以一对多的标签分配方式(如ATSS和Faster RCNN)进行监督,轻松增强端到端检测器中编码器的学习能力。

qingjing0413的博客 1154

Jupyter Notebook 安装包下载|单元格分块运行,图表直接内嵌

本文详细介绍Jupyter Notebook的安装与基础使用,推荐通过Anaconda一键安装,省去配置烦恼。文中涵盖Jupyter Notebook的交互式特性、单元格操作、Markdown与代码混合编写、第三方库安装及常用快捷键,帮助新手快速上手,高效完成数据分析、教学演示等任务。

GDShrc的博客 204

IBM 3560M3 R5 坏盘更换记录

公司一台老旧 3650M3在日常巡查过程中发现硬盘报错

ddriv的博客 3941

从0到打通CICD!SpringBoot+GitLab+Jenkins+Docker完整实验

开源Java编写CI/CD工具;依靠插件扩展能力。核心概念:Job任务、Pipeline流水线、Agent执行节点、Artifact构建产物、Plugin插件。Pipeline阶段:拉取代码 → 编译构建 → 单元测试 → 代码质量扫描 → 打包制品 → 部署测试环境 → 部署生产。IDEA提交代码不要提交.idea目录,会产生冲突。Docker daemon.json不能存在非法url,否则docker启动失败。

2403_87659444的博客 202

单细胞分析(五)——使用Harmony进行数据整合和去批次

为了保证单细胞RNA测序数据的准确性和可靠性,需要对数据进行样本去批次处理。去批次的方法包括Harmony,SeuratV3等,这些方法可以有效地消除批次效应和技术噪声,并提高单细胞RNA测序数据的质量,为后续的数据分析提供更加可靠的基础。

阅读文献,记录学习笔记 3万+

AUTOSAR AP平台开发避坑指南:基于华为MDC的接口配置与数据通道实战

本文详细解析了AUTOSAR AP平台与华为MDC的协同开发实践,涵盖接口配置、数据通道优化及资源分配策略。通过实战案例展示如何解决传感器接入、通信协议栈优化等常见问题,提升智能驾驶系统性能。特别针对MDC平台特性,提供执行管理、调试调优及安全设计的专业指导,助力开发者高效完成ADAS/AD系统开发。

julia4scientist的博客 1138

学习FreeRTOS推荐哪本书?

第3部分结合硬件实战,讲解基于FreeRTOS开发UART、USB等外设驱动的方法,演示任务、中断、DMA的协同使用,并讲解松耦合架构设计;《FreeRTOS实战:用STM32+SEGGER打造工业级实时嵌入式系统(第2版)》内容由浅入深、理论结合实战,既适合嵌入式系统入门者从零学习RTOS与FreeRTOS开发,也可供具备一定经验的嵌入式工程师参考,用于提升FreeRTOS项目开发、驱动设计与系统调试能力。第14~15章介绍FreeRTOS的内存管理,以及FreeRTOS在多处理器与多核系统中的应用。

人邮异步社区 275

Qt入门教程【Core篇】singal and slot信号与槽

Qt中信号与槽singal and slot

小鱼酱的博客 2449

OpenCV学习(一)

本文介绍了OpenCV的基本概念与应用,通过简单代码演示图像灰度转换与人脸检测,展现其“简化复杂视觉任务”的核心优势。OpenCV是开源、跨平台、多语言支持的计算机视觉库,广泛应用于人脸识别、车牌识别、工业检测等领域。文章详细指导了在Windows系统下使用Python 3.12搭建OpenCV开发环境的步骤,包括Python安装、环境变量配置及验证方法,为初学者提供清晰的入门路径。

xiao_suan_cai的博客 180

用「OpenClaw」打造新媒体运营神器:小红书/公众号全自动选题→创作→排版→发布全流程

对于新媒体运营的从业者来说,AI不是要取代运营人员,而是把他们从繁琐的重复劳动中解放出来,专注于更核心的内容策略、用户运营、品牌建设,这才是AI在传统行业落地的真正价值。这是最终输出可发布内容的核心智能体,我们通过「OpenClaw」的Prompt工程,结合不同平台的排版规范,实现了一键生成符合要求的排版,完全替代人工重复劳动。这套系统的落地,不是技术的炫技,而是真正用AI解决了新媒体运营的核心痛点:用自动化替代重复的人工劳动,用数据决策替代经验主义,用全闭环执行替代纸上谈兵的建议。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 198

2024美团秋招硬件开发笔试真题及答案解析

在 Linux 内核的网络设备驱动中,数据链路层的功能通常由网络协议栈的低层(如以太网驱动)实现,而不是作为网络设备驱动的一个独立层次。在 FreeRTOS 中,任务通知(Task Notifications)是一种轻量级的事件传递机制,用于在任务之间或任务与中断之间传递信号。小美正在开发一个简单的密码生成器,其中一个功能是将输入的字符串中的所有字母按字母顺序循环前移一位(即 'a' 变为 'z','B' 变为 'A',以此类推)。它包含了网络设备的各种参数和方法,用于管理网络设备的初始化、配置和操作。

XU157303764的博客 1675

pycharm如何运行python代码

在PyCharm中运行Python代码的主要步骤包括:安装PyCharm、创建项目、编写Python代码、配置运行环境、执行代码。 首先

2601_96798737的博客 205

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

计算题验证码怎么自动算出答案?安卓/ios手机开发工具按键精灵OcrEX识别加计算,一套流程全搞定

计算题验证码看似简单,实则常困住脚本自动化开发者。本文详解使用按键精灵安卓版OcrEX组件实现三步破解:精准识别算式、清洗脏数据(如等号、问号、中文运算符)、调用eval或自写函数计算结果。关键技巧包括缩小识别区域、处理全半角差异、利用可信度过滤低质识别,并推荐正则提取标准算式。完整脚本可直接运行,大幅提升自动化成功率。

ii_best的博客 198

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Pycharm使用免费的Agent助手QoderCN

本文手把手教程带你零成本在 PyCharm 中安装并使用 Qoder CN(原通义灵码)——阿里云推出的智能编码助手。支持多国产大模型自由切换(如 Qwen、DeepSeek、GLM 等),具备 Agentic 编码能力,可自动拆解任务、读写文件、执行命令。通过插件市场一键安装,登录后即可使用行间补全、会话提问及复杂工程任务自动化。免费额度覆盖日常开发,无需切换工具,真正实现高效智能编程。

LDC,公众号【轻松学编程】 703

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【AI编程】使用笔记:修复vscode中codex插件加载失败 Codex could not start

适用于打开 Codex 侧栏后显示,并在日志中确认界面就绪超时的情况。本文将等待时间从延长到。这是针对特定插件版本的临时修改,该版本把时限写在插件程序里,VS Code 的和 Codex 的都没有对应设置项。

tz_zs的博客 376

纯静态HTML项目文件打包成war包

纯静态HTML项目文件打包成war包

bjzhang75的博客 207

哪些国产单片机厂家提供FAE技术支持?英锐恩等对比

大厂FAE资源通常优先服务大客户,中小批量项目往往只能找代理商或看论坛。如果你需要,推荐:收到请求当日或次日回复,必要项目24小时内工程师到场,还能组织芯片研发工程师一起评审问题。生态成熟、资料丰富;通过代理商体系提供支持。

2601_95079068的博客 211

【无标题】

mount ip(server):/pub /mnt——挂载。文件系统:明确了一个存储设备,组织文件的方法和数据结构类型。netstat -tunlp----显示端口监听。-o 挂载参数 remount,(ro/rw)一个格式化的U盘 D:iso。mount -t指定虚拟。

2401_89467413的博客 24

【Git】从入门到精通(十三)—— .gitignore:忽略不需要追踪的文件

.gitignore是项目管理中不可或缺的配置文件,用于排除编译产物、依赖目录、日志、密钥等不应纳入版本控制的文件,防止仓库臃肿与安全泄露。其语法包括通配符*、**跨目录匹配、!取反规则及路径前缀/,支持全局忽略(core.excludesfile)与局部覆盖。关键点:.gitignore仅对未追踪文件生效,已提交文件需用git rm --cached移除追踪。推荐以GitHub官方模板为基础,结合项目实际定制,并配合git check-ignore -v排查问题。保持.gitignore提交共享,确保团队

m0_67393827的博客 220
上一篇: C#首席设计师Anders Hejlsberg专访
下一篇: Anders Hejlsberg语录
SafeF8
博客等级 码龄22年 10粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值