这个,如果一个编程语言把其他编程语言都干掉,这世界只有一种编程语言那多没意思。
如果说是停电,再牛逼的编程语言,可能都没有一支便宜的蜡烛好使。这就跟人一样,这世界需要很多冠军、明星!但也需要很多我们这样的平凡之人。
例如我平时写点桌面软件什么的,使了很多语言,我还是喜欢 aardio 好使!简单粗暴!
明星只是拿来看的,做爱做的事 - 那必须是自己名不见经传的心肝老婆。
丈夫下班回到家,看见妻子揍儿子,没理他们。径直走到厨房,看见小矮桌上煮好一锅馄饨,于是盛了一碗吃。吃完看见妻子还在那里揍儿子,看不过去了,就说:教育小孩不能老用暴力,要多讲道理嘛!妻子说:好好的一锅馄饨,他居然撒了一泡尿进去,你说气人不气人?丈夫听后马上说:媳妇你歇会儿,让我来揍!悟道: 置身事外,谁都可以心平气和;身处其中,谁还可以淡定从容?所以请不要轻易嘲讽别人不应该撕逼,因为你不在其中……
其实适当的撕逼是好事 ,该出手时就出手才是真好汉大丈夫,没有撕逼这种伟大的、只有万物之灵的人类才拥有的执着的追求真理的行为,人类的历史可能要倒退几千年,撕逼也要撕的潇洒仗义、慷慨激烈,不偷奸耍滑,更不要装模作样演戏作弊撒谎说假话,撕逼一定要遵守撕逼这项伟大而神圣的运动规则,最讨厌的就是那种别人在撕逼,他在边上看笑话,动不动就:“搬凳子、搬椅子,瓜子、花生......看热闹喽......”,这种低级品味、幸灾乐祸的家伙最可恨。
不要说国产软件都这样嘛,至少还有许许多多象 aardio 这样国产软件的干净的免费着、没有广告,没有弹窗、没有全家桶。但奇怪的是这样也有很多喷子会经常骂不弹窗不想办法耍流氓那叫没营利模式用着还是不爽。但真的要做收费软件吧 - 其实很多人是不会真的去给钱的,而是跑去用盗版。很多人真正想要的就是这个,用盗版,不用花钱,没有弹窗,没有全家桶,不花钱享受到花钱才能享受到的服务。就再也不会骂了。
所以做国产软件有个公开的秘密,要想不挨骂,就是先做成商业软件,然后自己再悄悄的弄个“盗版”放到网上,同样的免费,你会发现世界安静了,用户的态度都变好了,头没扬那么高了,而且“盗版”里还可以名正言顺的放“暗桩”,被坑了的“盗版”用户基本选择默默的忍受,即不会去骂,也不会花钱买,他顶多就是安静的离开去找另一个盗版软件。但是稍微有点自尊心的国产软件就不愿意这么搞,他们宁愿挨着骂并继续坚持做着所谓“免费软件”、艰难的从那些一毛不拔的用户牙缝里挤点饭钱。
当没有人用盗版的时候,国产软件就不会再“流氓”,真正“流氓”的不是那些做软件的,而是那些死都要用“盗版”的太多。 不要说这个“国产”土壤不好,因为你我都是这个土壤的一份子
这个,一句代码要写一个软件还是有点困难滴,
用 aardio 写一个独立软件至少要那么两句代码:
import win.ui;
import web.kit.form;
var winform = win.form(text="V2EX 浏览器");
web.kit.form(winform).go("
http://v2ex.com/t/240868");
winform.show(3);
win.loopMessage();
其实调用微软 JS 解释器就可以编译 typescript ,不过要动点手脚, aardio 里就可以这样搞:
import typeScript.compiler;
typeScript.filesystem.fileData["test.ts"] = /**
TS 代码
**/
//虚拟文件系统
typeScript.filesystem.writeFile = function(fileName,data,writeByteOrderMark){
};
typeScript.compiler.execute("test.ts")
@
cyberdak 请问你我哪一句话说了:“会写代码,就了不起?!”?!不要动不动就觉得别人有看不起你的意思,别人根本就没时间看你!另外请看清楚我在说的是一边用一边骂脏话的人,如果某人看不起写代码的认为他们写的蠢到不如 1+1 等于 3 ,那还要委屈你每天去屈辱的使用干什么?是因为你 1+1 等于 3 的东西都写不出来?! 礼貌的给出善意的批评、跟张嘴就粗俗的乱骂是两回事。乱骂当然可以,那要看有没有资格,如果别人写的软件 1+1 等于 3 ,你是 linus 你当然可以骂,但残酷的现实是你不是你没有牛逼哄哄骂人的资格!!!如果让你算 1+1 你会算出来是 30 你有啥资格骂?!
另外好心奉劝你一句,你说话就说,不要地图炮,说什么用免费软件的都是穷逼,是傻屌,我们所有人都用免费软件,使用免费资源,呼吸免费空气,你这等于连你父母都骂成穷逼傻屌了,请自重!很反感你这种张嘴就不停飒脏话的家伙,完全不看看自己有没有这种份量。
一个人用免费软件使用免费资源没有错,那些这世界上,有很多人连解决自己的温饱都是问题。
但有那么一些拥有梦想的人,可以在解决艰难生存问题的基础上,去力所能及的帮助他人,去提供免费软件或服务,这都是值得尊敬,对待君子,对待懂得感恩的人,那使用免费软件是美好而高尚的,是赠人玫瑰手有余香。但这世界上有一些人,你是赠他玫瑰他随手抹屎,心中充满憎恨和抱怨,这种人就很不好。
对,付费了用户就是上帝,但是现在的问题是用的是免费的软件,楼主说了,连广告也没有放,纯的干净的免费,用免费的软件不要有上帝的心态,上帝是不需要凡人为他提供免费服务的。
如果一个乞丐问你要一千块钱,再加给你一巴掌你干吗,你当然不干。
但富人问你给你一个亿,打你一巴掌你干吗,你当然愿意,拿着一个亿,挨完一巴掌,再用十分之一的钱十倍的打回去,然后大笑他是傻逼。
人在不同的地位,有没有付费,当然有很大的区别。
爹娘骂自己几句脏话,当然不能生气,还要自责自己做的不好不该让爹娘生气了。
很多人就是分不清楚什么时候可以有资格装逼,以为上了网对谁都可以飒脏话,这种人需要适当的教训,这就象清理垃圾一样 - 是伟大的、是传播正能量、是在保护环境。
以前有个人对 aardio 作者语出不逊,然后 aardio 作者就教训了他几句,就算是用免费软件也不能这么嚣张啊。然后就有人在旁边说了:要有胸怀,要淡定.....balabala 。
于是,然后, aardio 作者过了一会...告诉那人:“网上有人骂你是骗子”
那个人就突然不说话了...过了一会,大概是狂搜索去了,然后这个人就突然激动情绪失控,
破口大骂:“我操***,我***,我***......这绝对是造谣”。
所以这些人一部份是在表达某部份善意,另一部份是是在慷他人之慨,事不关己所以淡定说的很轻松。
其实愤怒是人必须的情感之一,没必要去压抑或伪装,懂得适度调整即可。往往是那种事事忍让压抑的人心理容易出问题。所以经常看到新闻,哪个人突然失控杀人了什么的,这人平时都是看起来很“好人”很“开心”。
其实不应该颠倒最基本的是非观,
别人提供免费的服务,基本的感恩之心应该有,说话要懂得尊重别人这是基本的教养。
有个段子:“我借你十块钱,你一直没还我,于是我问你要,你还说这人怎么小气,不就借了十块钱吗,最后是你占了便宜我还不是人”这种强盗逻辑很常见,明明是他在占你便宜,他语出不逊没教养,最后还很多人说你玻璃心,说你小气。
其实你并非小气,你有真性情,并没有任何错。
错的是那种说话让你不愉快的人,计算机伦理十戒就有我们不应该骚扰伤害他人,你给他提供免费软件是善意,他回报你辱骂和脏话就对你的骚扰和伤害。我们都拥有不被他人无故骚扰和伤害的权利和自由 - 这并非是小气。坚持这一点,就是在坚持正义与正能量。
但是你生在天朝,一个以伪善文化为主流的环境中,有时候传统文化会深入人心。
所以你处理的时候要小心谨慎,一不小心说话被人拿住把柄,会被成为围攻的对象,如此就得不偿失了。
所以三思而后言。
为了这种人,放弃你的软件并不值得,是他犯的错,你没必要去惩罚自己,即使要放弃也不是为了这种人,因为他不配。
这个世界上好人永远是多数,只是好人大多话就少,喷子的话比较多而已,所以生完气当他不存在是对的。有时候可以适当的教训他一下,你可以说:“你的建议很好,但是请文明用语。”,别看淡淡的几句话,这种人通常是真正的玻璃心受不了刺激的,别害怕他生气报复你黑你什么的,不管你怎么做,这种人都会恶语相加,无论你怎么做,这种人都是大量的,就象苍蝇蚊子一样你对他好不好都是那样数量总是很多,但你不能因为苍蝇蚊子多就不活着吧,你需要思考的仅仅是怎么去拍死苍蝇蚊子。
其实并没有什么,这些对你恶语相加的人存在的意义:就是用于磨练你强大的内心
有些网民素质实在很差,越是免费服务他越是觉得你求他,用了毫无感恩之心,他认为我用你的是看得起你,浪费他宝贵的时间来骂你几句就是更看得起你了,如果所求不得你没有跪下来对他感恩,他瞬间就玻璃心受伤,可以在网上骂上几整年。其实最玻璃心的就是这种人,什么也不会什么也不懂,用了个免费软件就觉得自己有点档次有指手划脚的资格了。这种人你越是对他善意,你越是往你头上骑。就算你把软件做的再好,他还要说你不该免费不如商业服务好公司不够大,等你真的做大了,他又不爽了,他要骂你太铜臭味、店大欺客.....你看什么 QQ 、 360 那个不是张嘴就被骂流氓?!谁去想过对提供免费服务的软件需要有一点基本的做人礼貌和教养?骂的越不要脸越觉得他自己牛逼。
最奇怪的是有不少人支持这种人,别人骂你你就该忍着,不然就是玻璃心,三毛《人》里有一段话说的很好:“ 社会上最不公平的看法就是:摆在眼前一个自私自利,毫无道德良知,随时随处麻烦他人,占尽一切便宜的小人。一般只将这类人称为——‘不懂事’”。
其实你不是为别人而活着、做你自己,该出手时就出手,那些语出不逊的人就是没教养欠教训,你可以仁慈的帮他爹娘教训教训他。你可以让他知道对别人不友好别人就不会对他友好。这种人让他爱你的软件很难,但让他恨你的软件就很容易,恨上你的软件他会记得不辈子,所以,抽他!狠狠的抽他!怎么让他难受怎么虐他!你需要好好享受这种机会,不是每个人都有机会每天虐这种奇葩的。
sql 一般是先创建表设计好数据的结构和相互之间的关系,存储固定格式的数据,使用支持条件查询的 SQL 语句。 nosql 就反之数据更松散灵活存储的数据没有固定的格式,直接用代码更容易看出其区别。
典型的例如操作 sqlite 的代码( aardio 代码 )
import sqlite;
var db = sqlite("/sqlite.db") //创建数据库
db.exec("CREATE TABLE IF NOT EXISTS [film](title);")//创建表
db.exec("REPLACE INTO film VALUES ('title')") //增加数据
for rowid,title in db.each("SELECT rowid,* FROM film WHERE title LIKE '%t%'") {
console.log( rowid,title, length, year, starring ) //查询数据
}
操作 unsqlite 的代码则不需要使用 SQL 语句,用 JSON 就可以,例如( aardio 代码 ):
import unqlite;
var udb = unqlite("/unqlite.db");// 创建数据库
udb.storeObject("jsonObject",{ name = "测试"; 随便搞="随便随便"} ) // 存储 json 数据
udb.fetchObject("jsonObject",function( value ){
console.dumpJson( value ) // 查询 json 数据
} )
autoit ,以及基于 autoit 山寨出来的 ahk ,一个最主要的功能就是模拟操作控制外部的句柄窗口十几个函数(这两软件曾经为了这十几个函数的所有权打的不可开交),不过现在 direct ui 流行,基本都是无句柄窗口了,这种模拟按键的软件有些过时了。
说到 autoit 的语言设计,真是不敢恭维,
简单的一个调用 WINAPI 的代码,用 aardio( aauto ) 写只要一句。
var tm = time() //创建 SYSTEMTIME
var filetime = ::FILETIME() //创建 FILETIME
::Kernel32.SystemTimeToFileTime(tm,filetime) //调用 API 函数
改成 autoit 来写吧,比写命令行还麻烦:
------------------------------------------------------------------
$SYSTEMTIME = DllStructCreate("ushort;ushort;ushort;ushort;ushort;ushort;ushort;ushort")
$lpSYSTEMTIME = DllStructGetPtr($SYSTEMTIME)
$LOCALFILETIME=DllStructCreate("dword;dword")
$lpLOCALFILETIME = DllStructGetPtr($LOCALFILETIME)
DllStructSetData($SYSTEMTIME, 1, $Year)
DllStructSetData($SYSTEMTIME, 2, $Month)
DllStructSetData($SYSTEMTIME, 3, _DateToDayOfWeek($Year,$Month,$Day)-1)
DllStructSetData($SYSTEMTIME, 4, $Day)
DllStructSetData($SYSTEMTIME, 5, $Hour)
DllStructSetData($SYSTEMTIME, 6, $Minute)
DllStructSetData($SYSTEMTIME, 7, 0)
DllStructSetData($SYSTEMTIME, 8, 0)
$result = DllCall("kernel32.dll", "long", "SystemTimeToFileTime", "ptr", $lpSystemTime, "ptr", $lpLocalFileTime)
If $result[0] = 0 Then
Local $lastError = DllCall("kernel32.dll", "int", "GetLastError")
SetExtended($lastError[0])
SetError(1)
Return 0
EndIf
不想用计划任务,那就自己写个小软件好了,分分钟的事情,以下 aardio 代码:
import win.ui;
/*DSG{{*/
var winform = win.form(text="定时关机任务";right=599;bottom=399)
/*}}*/
import win.taskScheduler;
var taskScheduler = win.taskScheduler(winform);
var task = taskScheduler.create("定时关机任务",function( arguments ){
import sys;
sys.shutdown();
})
task.time = {
second = 秒 ;
minute = 分钟 ;
hour = 小时 ;
day = 日 ;
month = 月 ;
}
taskScheduler.start();
winform.show()
win.loopMessage();
aardio( aauto ) 做客户端 EXE 小、轻、快、做出来的界面小而美,提供非常多的 web 控件,象 webkit,webform,htmlayout...一堆,而且还带了个 python 解释器支持 python 代码、当然缺点是限于 windows ,但桌面客户端跨平台意义真不大,在 PC 上其他操作系统的占有率基本可以忽略不计。
跨平台不能发挥专有平台的优势,增加不必要的复杂度,最麻烦的就是体积大,写个记事本软件界面一般般的就近百 MB ,体积大带来的不仅仅是下载传输慢,启动占用资源也大,各种坑就多,浪费的时间就多,欲哭无泪的时候就更多。
嘿嘿, C 语言还可以这样玩( aardio 代码 )
code = /**
#include <windows.h>
__declspec(dllexport) int Msgbox( HWND hwnd )
{
struct { const char * message;int id; } argument = {
.message = "测试消息来自 C 语言",
.id = GetCurrentThreadId()
};
SendMessage(
hwnd,0xACCE/*_WM_THREAD_CALLBACK*/,
"onMessageChange( { string message;int id } )",
&argument
);
return 0;
}
**/
import tcc;
vm = tcc();
vm.addLib( "user32", "kernel32", "gdi32" )
vm.output( "/bin.dll", code )
import win.ui;
var winform = ..win.form({})
winform.messageOnly();
winform.onMessageChange = function(param){
winform.msgbox("调用:" + param.message );
win.quitMessage();
}
var dll = raw.loadDll( "/bin.dll",, "cdecl" );
dll.Msgbox( winform.hwnd );
win.loopMessage()
不要这么说,如果没有微软,只怕会倒退不止 10 年。
windows 仍然在 PC 市场有绝对的统冶地位,瘦死的骆驼比马大,更何况现在就是动不动说这个死了那个死了,哪有真的那么容易死的, PC 硬件设备的出货量的确下跌的很厉害,但是手机一两年一换,而 PC 十年一换,手机小小的屏幕空间有限的运算能力都难能以完全替代 PC 。
没有什么东西能一直时髦,今天的移动什么的火爆一样会有快速死亡的那一天,死亡总是来的那么快那么出人意料,人要有本事,捡拉极卖烧饼都会有前途,要是自己不行,就是全部都去写 PHP ,不见得每个 PHP 程序员都混的比微软滋润啊。
windows 开发学不好,一个原因就是每天捡了芝麻丢西瓜喜新厌旧,把时髦的技术放在嘴上不如把过时的技术放在心里,其实 windows 开发也可以比写 PHP 还简单的,哪里一定需要掌握你说的那一大堆,例如我用 aardio ,分分钟上手,分分钟撸出小而美的桌面软件......不要说十年,十分钟学到的知识再用二十年没问题。
所以说写桌面软件很简单,比 PHP 简单,写了桌面软件还可以去搞 PHP ,去搞 Python ,左右手一起撸,没有什么你死我活非要舍弃谁的政冶取舍问题。
具体还是要看做什么桌面软件, 脱离应用场景讲谁最好用都是不负责。
每种语言都有优劣,都有适不适合干的事。你要是做个 office 那样的 MDI 界面,那用 MFC 最方便,点三两下就全给你生成好了。
再或者说你要是很在乎体积,用 QT 就不太好了,太大了!
QT 在很多时候真不如 VC6 , VC6 是唯一所有 WIN 系统自带的系统运行库,所以 VC6 生成的软件非常的小。
当然如果不在乎发布后的体积,又热爱 C++那种虐心的欲哭无泪的感觉,那用 QT 也不错。
要是不想被别人反编译出源代码,这用 C#以前就要先冷静一下了 ,先看看 CSDN 这几天的一个帖子 《欲哭无泪, Winform 程序轻轻松松被人反编译了......》
http://bbs.csdn.net/topics/391855626 C#生成的 EXE 也就是个源代码压缩包差不多,一堆的工具可以直接还原出源代码(包括工程文件)。
其实 C#做些小东西还真不如 python ,但如果你是想生成 EXE 文件,方便传播和发布,唉, python 做这个事就老头痛了,很多包很麻烦,生成 EXE 很多坑,尤其是用 python 做个窗口界面啥的要搞的老漂亮啥的还是老麻烦的。
象我这种没追求的人,就比较喜欢即可以偷懒又省事马上就能看到效果的 aardio
自行车虽然没有房车那么大那么美,但好在简单实用操作方便。
如果不是想专业从事桌面软件行业,这些东西都太重了,学习成本高,开发工期长...没有那么美好的。
桌面软件跨平台意义不是很大,非 win 的系统的市场占有率基本可以忽略,跨平台是有代价的。一是体积大,二个是需要考虑的环境因素太多不可避免的搞的更复杂,三是不能发挥专用平台的优势。
有 PHP,JS 的基础,想快速搞些桌面软件,最方便的就是 aardio ,分分钟就能撸出个象样的程序来,分分钟就能找到感觉。即使是原来就会 C#,C++这些会点 aardio 也是不错的,
aardio.org 的站长就是十几年的 C#程序员,人家用 aardio 写了个 ERP 企业管理系统,服务端客户端全部用 aardio 开发。
而且 aardio 里调用什么其他的都很方便,几句代码嵌入个 webkit ,几句代码嵌入个 webbrowser ,直接调用 C#,Java,C,Js,PHP...... 虽然拥有这么多的功能,但是 aardio 的开发环境却只有 6.5MB ,简单、小巧、粗暴!
随便几句代码找下感觉
import win.flashBox
var flash = win.flashBox(text="aardio Form";right=599;bottom=399)
flash.movie = "
http://update.aau.cn/aardio/samples/transparent.swf";
flash.show()
win.loopMessage();
没错,五句代码就可以生成一个简单的、但完整的窗口程序、一个桌面透明的 FLASH 动画窗口。
上面种种方法我这里试了下都没用,添加到兼容视图, F12 指定兼容版本,工行网银登录页都打不开,
但用我上面写的那个 aardio 代码 自己嵌个 IE 控件进去,然后就全部正常,可以正常登录网银,可以使用 U 盾什么的。
另外工行有提供“工行网银助手 ” ,下载运行一下试试看,他可能自动修改一些系统设置、添加信任网站什么的,然后可能就好了。