Write in C

(sung to The Beatles "Let it Be")
用C写吧
(一首仿Beatles歌《Let's it Be》)
English version by Omri Weisman, 中文版 by xcxin
When I find my code in tons of trouble,
Friends and colleagues come to me,
Speaking words of wisdom:
"Write in C."
每当我发现我的代码中充斥着错误,
朋友和同伴们就来到我身边,
带着富有智慧的说辞:
“用C写吧。”

As the deadline fast approaches,
And bugs are all that I can see,
Somewhere, someone whispers"
"Write in C."
项目交付期一天天逼近,
但是我仍能发现太多Bugs,
某个地方有个人悄悄对我说:
“用C写吧。”

Write in C, write in C,
Write in C, write in C.
LISP is dead and buried,
Write in C.
用C写吧,用C写吧,
用C写吧,用C写吧,
LISP早就被历史埋葬!
用C写吧。
I used to write a lot of FORTRAN,
for science it worked flawlessly.
Try using it for graphics!
Write in C.
我曾经写过大量的Fortran程序,
科研应用一直很OK,
但是试试图形的东东?
用C写吧。

If you've just spent nearly 30 hours
Debugging some assembly,
Soon you will be glad to
Write in C.
如果你已经花费掉30小时,
全部都在你的汇编中捉虫,
不久你会发现,
用C写吧。

Write in C, write in C,
Write In C, yeah, write in C.
Only wimps use BASIC.
Write in C.
用C写吧,用C写吧,
用C写吧,yeah,用C写吧。
只有白痴才用BASIC。
用C写吧

Write in C, write in C,
Write in C, oh, write in C.
Pascal won't quite cut it.
Write in C.
用C写吧,用C写吧,
用C写吧,oh,用C写吧
Pascal永远也别想替代C,
用C写吧!

Guitar Solo(吉他序曲)

Write in C, write in C,
Write in C, yeah, write in C.
Don't even mention COBOL.
Write in C.
用C写吧,用C写吧
用C写吧,yeah,用C写吧
管COBOL干什么!?
用C写吧。

And when the screen is fuzzy,
And the edior is bugging me.
I'm sick of ones and zeroes.
Write in C.
想想屏幕一片混乱,
想想编辑器里太多Bugs,
我就会感到不舒服,
用C写吧。

A thousand people people swear that T.P.
Seven is the one for me.
I hate the word PROCEDURE,
Write in C.
太多的人们那,诅咒T.P.(注1)
我就是其中之一,
我憎恨PROCEDURE,
用C写吧。

Write in C, write in C,
Write in C, yeah, write in C.
PL1 is 80's,
Write in C.
用C写吧。,用C写吧。
用C写吧。,yeah,用C写吧。
PL1是80年代的老货,
用C写吧。。

Write in C, write in C,
Write in C, yeah, write in C.
The government loves ADA,
Write in C.
用C写吧,用C写吧。
用C写吧,yeah,用C写吧。
政府只喜欢漂亮的ADA(注2),
用C写吧。
 
注1 :T.P.指代Turbo Pascal。Borland公司传奇般的编译器。也是世界上第一个不用更换软盘就可以闪电般完成编译的第一个Pascal编译器。不过其烦琐的语法以及难看的begin...end一直为人们所诟病。
注2: ADA是指代的Ada语言,Ada是法国一位年轻漂亮的姑娘的名字。据说她曾经为巴贝其的“分析机”编写过程序,因此被誉为人类历史上第一位程序员。

歌曲下载:http://download.youkuaiyun.com/source/393547
类似的歌曲还有这首讲JavaEE5的:http://blog.youkuaiyun.com/DL88250/archive/2008/02/14/2095540.aspx

转载于:https://www.cnblogs.com/lanzhi/archive/2008/03/24/6470430.html

检测Zygisk通常涉及到读取系统服务信息,这在C语言环境中并不直接支持,因为C不是用于系统级操作的语言。不过,如果你正在开发针对Android的JNI (Java Native Interface) 应用,你可以间接地访问Android的系统服务。以下是一个简单的示例,展示如何使用JNI从Java代码获取系统服务名字,然后与Zygisk的服务名进行比较: ```c #include <jni.h> #include <android/log.h> // 定义JNI函数 extern "C" JNIEXPORT jboolean JNICALL Java_com_example_ZygiskDetector_checkZygisk(JNIEnv *env, jobject obj) { const char* service_name = "/system/bin/app_process"; const char* zygisk_service_name = "/system/xbin/zygisk"; // 获取实际的系统服务名称 char* actual_service; int actual_length = getActualServiceName(env, &actual_service); if (actual_length == -1) { android_log_error(ANDROID_LOG_ERROR, "Failed to get actual service name"); return false; } // 比较服务名称 if (strcmp(actual_service, zygisk_service_name) == 0) { free(actual_service); return true; // 服务名匹配Zygisk } else { free(actual_service); return false; // 服务名不匹配Zygisk } } // 这里是辅助函数,假设它能从JNI环境获取服务名称 int getActualServiceName(JNIEnv *env, char **service) { // 实际的JNI代码将在此查找并返回服务名称 // 这部分通常会利用JNI本地方法调用系统级别的函数 // 或者使用AIDL暴露给C库的服务数据 // 示例仅为演示,真实情况需查阅Android文档 *service = (char*) malloc(strlen("/system/bin/app_process") + 1); // 假设app_process是正常服务 strcpy(*service, "/system/bin/app_process"); return strlen(*service); } ``` 请注意,这个例子非常简略,并且实际的实现需要在Android环境下,结合JNI技术和系统调用才能完成。同时,检查Zygisk的行为取决于应用开发者如何设计他们的检查机制,上述代码仅供参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值