首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 其他开发语言 >

很不得劲,用了一周时间在Linux就学会了一门新的编程语言vala叽哩哇啦,学一个新语言咋就这么容易捏

2012-12-31 
很不爽,用了一周时间在Linux就学会了一门新的编程语言vala叽哩哇啦,学一个新语言咋就这么容易捏[size36px

很不爽,用了一周时间在Linux就学会了一门新的编程语言vala叽哩哇啦,学一个新语言咋就这么容易捏
[size=36px]很不爽,用了一周时间在Linux就学会了一门新的编程语言vala叽哩哇啦,学一个新语言咋就这么容易捏[/size]

Vala 是使用类似 C# 的语法,应该比用 C 写轻松的多。Vala 编译的时候,会把 Vala 程序编译成 C 代码,然后再使用 C 编译器编译成本机代码,我最近觉得这种编译方式很好,因为现在而言,几乎任何一个系统,不论是 PC 的,还智能手机,抑或嵌入式设备,总会至少提供一个 C 的编译器,那么把程序先编译成 C 就等于在这些系统上都可以运行了。

很不得劲,用了一周时间在Linux就学会了一门新的编程语言vala叽哩哇啦,学一个新语言咋就这么容易捏

代码如下:
   //别看错了哦,这可不是C#,这是一个新的语言叫哇啦
   int main (string[] args) {

    // Output the number of arguments
    stdout.printf ("%d command line argument(s):\n", args.length);

    // Enumerate all command line arguments
    foreach (string arg in args) {
        stdout.printf ("%s\n", arg);
    }

    // Exit code (0: success, 1: failure)
    return 0;
}

直接编译成纯C语言代码
很不得劲,用了一周时间在Linux就学会了一门新的编程语言vala叽哩哇啦,学一个新语言咋就这么容易捏

代码如下:
/* main.c generated by valac 0.14.0, the Vala compiler
 * generated from main.vala, do not modify */

/*别看错了哦,这可不是C#,这是一个新的语言叫哇啦*/

#include <glib.h>
#include <glib-object.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>

#define _g_free0(var) (var = (g_free (var), NULL))

gint _vala_main (gchar** args, int args_length1);

gint _vala_main (gchar** args, int args_length1) {
gint result = 0;
FILE* _tmp0_;
gchar** _tmp1_;
gint _tmp1__length1;
gchar** _tmp2_;
gint _tmp2__length1;
#line 5 "/media/disk i_/working/vala/test1/test1/main.vala"
_tmp0_ = stdout;
#line 5 "/media/disk i_/working/vala/test1/test1/main.vala"
_tmp1_ = args;
#line 5 "/media/disk i_/working/vala/test1/test1/main.vala"
_tmp1__length1 = args_length1;
#line 5 "/media/disk i_/working/vala/test1/test1/main.vala"
fprintf (_tmp0_, "%d command line argument(s):\n", _tmp1__length1);


#line 8 "/media/disk i_/working/vala/test1/test1/main.vala"
_tmp2_ = args;
#line 8 "/media/disk i_/working/vala/test1/test1/main.vala"
_tmp2__length1 = args_length1;
#line 39 "main.c"
{
gchar** arg_collection = NULL;
gint arg_collection_length1 = 0;
gint _arg_collection_size_ = 0;
gint arg_it = 0;
#line 8 "/media/disk i_/working/vala/test1/test1/main.vala"
arg_collection = _tmp2_;
#line 8 "/media/disk i_/working/vala/test1/test1/main.vala"
arg_collection_length1 = _tmp2__length1;
#line 8 "/media/disk i_/working/vala/test1/test1/main.vala"
for (arg_it = 0; arg_it < _tmp2__length1; arg_it = arg_it + 1) {
#line 51 "main.c"
gchar* _tmp3_;
gchar* arg = NULL;
#line 8 "/media/disk i_/working/vala/test1/test1/main.vala"
_tmp3_ = g_strdup (arg_collection[arg_it]);
#line 8 "/media/disk i_/working/vala/test1/test1/main.vala"
arg = _tmp3_;
#line 58 "main.c"
{
FILE* _tmp4_;
const gchar* _tmp5_;
#line 9 "/media/disk i_/working/vala/test1/test1/main.vala"
_tmp4_ = stdout;
#line 9 "/media/disk i_/working/vala/test1/test1/main.vala"
_tmp5_ = arg;
#line 9 "/media/disk i_/working/vala/test1/test1/main.vala"
fprintf (_tmp4_, "%s\n", _tmp5_);
#line 8 "/media/disk i_/working/vala/test1/test1/main.vala"
_g_free0 (arg);
#line 70 "main.c"
}
}
}
#line 13 "/media/disk i_/working/vala/test1/test1/main.vala"
result = 0;
#line 13 "/media/disk i_/working/vala/test1/test1/main.vala"
return result;
#line 78 "main.c"
}


int main (int argc, char ** argv) {
#line 2 "/media/disk i_/working/vala/test1/test1/main.vala"
g_type_init ();
#line 2 "/media/disk i_/working/vala/test1/test1/main.vala"
return _vala_main (argv, argc);
#line 87 "main.c"
}

很不得劲,用了一周时间在Linux就学会了一门新的编程语言vala叽哩哇啦,学一个新语言咋就这么容易捏

直接编译成可执行文件,类似windows下的exe
很不得劲,用了一周时间在Linux就学会了一门新的编程语言vala叽哩哇啦,学一个新语言咋就这么容易捏

输出结果如下:
linux-zk9e:~ # '/root/output/vala/test1' "hello csdner"
2 command line argument(s):
/root/output/vala/test1
hello csdner
linux-zk9e:~ # 

Vala 是使用类似 C# 的语法,应该比用 C 写轻松的多。Vala 编译的时候,会把 Vala 程序编译成 C 代码,然后再使用 C 编译器编译成本机代码,我最近觉得这种编译方式很好,因为现在而言,几乎任何一个系统,不论是 PC 的,还智能手机,抑或嵌入式设备,总会至少提供一个 C 的编译器,那么把程序先编译成 C 就等于在这些系统上都可以运行了。




【开源】分布式可编程的云平台,可大规模开展Web服务开发,期待专家点评
开源:完全自主研发搜索引擎1.0源代码及说明,单机400万网页,任意50词以内的检索不超过 20毫秒
天心天字辈ERP全部PDK源代码到了我手上的后果 - 超越天心之WEB天云
在Linux上开发.NET、Delphi、C心情真爽

[解决办法]
会把 Vala 程序编译成 C 代码,然后再使用 C 编译器编译成本机代码
这还算语言么?
我觉得就是像汇编本质上还是机器语言
这不就是把指令打包么?
[解决办法]
lz 到处贴,广告的意味太浓
[解决办法]
看命令行就知道是Novell的SUSE啊,看来不懂Linux的还真多

热点排行