linux编程
如果只是从人工智能的角度来说,linux的优势并不大。我能想到的几个可能的优势有:
1) 包管理。比如你要用c++的一个库opencv,linux下面直接apt-get install libopencv,然后在makefile里面加上-I `pkg-config opencv`就好了。如果是(老版)visual studio里面你要先打开浏览器,搜索opencv的网站,下载,解压,记住路径,回到vs右击工程,点属性,vc++ directories,点编辑,点添加,把路径粘贴进去。蛋都要碎了。
但是!这个优势只在vs2010发布以前有效。新版的vs你只需要右击工程,点nu-get package manager,然后搜索opencv点确定就没了。
2) 各种自动化。比如你写了个训练svm的程序,有1000个svm要训练。在linux下面可以把这个训练的程序编译成可执行文件trainsvm,接口是类似./trainsvm input1.txt svm1.dat。然后在命令行下面seq 1 1000 | xargs -I{} -n 1 -P 12 bash -c './trainsvm input{}.txt svm{}.dat'一下就开了12个进程一块训练,某个进程训练完了以后立马会有下一个补上有木有。(就是管程的概念)我在windows下面用c#实现这样的功能要将近100行,还没有xargs灵活。批量处理超级方便啊。用parallel还可以在多台机器上分布式训练。
但是!你在windows上装个cygwin这些也全都有。。
3) 有时候数据量太大了需要去amazon租ec2并行计算。windows机器比linux贵啊摔。还有配置相对慢。linux弄个小脚本分分钟就把环境都配好了(夹个私货,比如这是我的ec2 linux配直脚本 https://github.com/grapeot/debianinit )。价格这个无解。。配置方面windows的非官方包管理器chocolatey还比较弱,如果有谁知道如何快速配置windows环境欢迎指教。
所以基本结论是,如果只是想日人工智能,老老实实拱算法先,哪个熟用哪个。如果蛋痛想折腾,linux可玩性和逼格都要更胜一筹。而且用熟了以后完成任务(get things done)的能力会加强不少。
⑵ 给我简单说下,linux编程 怎么入门
LINUX操作系统常用命令,先会十来个常用的就可以ls cd mkdir rmdir cp mv rm
vi 的使用及简单的命令,很简单,一会就会。
gcc g++的使用,也就是命令,参数,常用的就那几个
makefile编写,看明白了也没什么,稍有点难,其实如果初级阶段写些简单的还是不成问题
SHELL编写,很容易编写简单的,复杂的我也没试过,学过一点,但是因为工作没用就没再接触,反正要是学先熟悉一下。
gdb调试,说难有点难,说不难其实和VC一样,只不过都用命令的行式,有时候有点不习惯
接下来就是一些LINUX C/C++的API的学习了,和VC有点不一样,但是其实功能都一样,对照一下都会了。线程、进程、网络编程等等
对于数据库的操作,ORACLE MYSQL SQLSERVER常用的掌握一下
环境变量总要会配吧
共享库到最后也应该去写吧,也就是VC中的DLL,不过不写也没关系。
能想到的就这么多了,希望可以对你有帮助,现在,我该去准备我离职工作交接什么去了,祝你好运!推荐书籍《鸟哥的linux私房菜》《linux就该这么学》
⑶ 到底怎么在Linux里编写c程序啊
在linux下通常使用gedit或vim直接编写.c程序,然后通过gcc指令编译。以Ubuntu系统为例,详细过程如下:
1、进入桌面Temp文件夹
⑷ linux编程
vi是linux中集成的一个文本编辑器(Visual Interface),linux内置的,vi即打开的命令
相关的vim,具有编程能力的编辑器
⑸ linux下的编程,用什么语言的最多
主要是C,C是Linux的“母语”,这也是linux这个开源环境和本身机制所导致的,就连linus都力挺C,而驳斥C++。虽然没必要拒绝C++,但是,不可否认,C更适合linux~。
不过写Qt图形程序这种情况下,C++是首选(Qt库是C++写的)。
在动态网页上还可以用perl、python、java之类的;
一般系统管理员和普通用户,用的最多的恐怕就是bash了,shell可以完成一系列动作和自动化管理。当然,这里也可以用perl或python之类的脚本语言。想知道更多Linux知识可参考下《Linux就该这么学》。
⑹ 什么是Linux下的编程
编程掌握的是一种思想。
linux和windows是不同的操作系统平台
如果单纯用c的话,用stdio库,那么linux和windows编程没有任何区别,除了生成的obj和最终的可执行文件不同
vc 是只能用于windows 平台下的编程
linux下的编程一般都没有IDE,都是写Makefile文件,然后编译
当然还是要跨平台的好一些
⑺ linux上如何编程
用编辑器写代码,用编译程序编译、连接。也有类似于windows系统的SDK,集写、编译、调试与一体。
⑻ 程序员怎样用Linux编程
在Linux上编程一般都是文本编辑器(Vim、emacs等工具)+编译器(GCC、g++、make、cmake等工具)+调试器(gdb),在Linux上用集成开发环境IDE(Linux上一般用codeblocks、eclipse-cdt等)的程序员要比Windows少。我才开始用的是eclipse-cdt,就是觉得IDE不好用,竟然写一个helloworld都要产生一大堆项目文件,这样的话如果是用git来维护管理代码就有些不方便了,而且如果编写的是命令行程序调试时会反复切换到终端,还不如直接在终端编译、调试,总之太不灵活。不过也有用gdb用得不习惯的,毕竟有些是从Windows上过来的,那就可以选择gdb的图形前端ddd和Kdbg这两个软件,这两个软件只是gdb的图形外壳,它们还是调用gdb来实现程序调试,但操作上方便多了。也有觉得用命令行编辑器不习惯的,他们会选择图形界面的gVim+各种Vim插件,还有图形界面更友好的代码编辑器如gedit、Sublime Text、Atom、VScode等等。
⑼ 如何学习linux编程
这样基本上系统方面的就可以掌握了。如果继续网络编程,建议看《TCP/IP进行网际互连》的第三卷,里面有很多关于应用协议telnet、ftp等协议的编程。 建议学习路径: 首先先学学编辑器,vim, emacs什么的都行。 然后学make file文件,只要知道一点就行,这样就可以准备编程序了。 然后看看《C程序设计语言》K&R,这样呢,基本上就可以进行一般的编程了,顺便找本数据结构的书来看。 如果想学习UNIX/LINUX的编程,《APUE》绝对经典的教材,加深一下功底,学习《UNP》的第二卷。这样基本上系统方面的就可以掌握了。 然后再看Douglus E. Comer的《用TCP/IP进行网际互连》第一卷,学习一下网络的知识,再看《UNP》的第一卷,不仅学习网络编程,而且对系统编程的一些常用的技巧就很熟悉了,如果继续网络编程,建议看《TCP/IP进行网际互连》的第三卷,里面有很多关于应用协议telnet、ftp等协议的编程。 如果想写设备驱动程序,首先您的系统编程的接口比如文件、IPC等必须要熟知了,再学习《LDD》2。 对于几本经典教材的评价: 《The C Programing Language》K&R 经典的C语言程序设计教材,作者是C语言的发明者,教材内容深入浅出。虽然有点老,但是必备的一本手册,现在有时候 我还常翻翻。篇幅比较小,但是每看一遍,就有一遍的收获。另外也可用谭浩强的《C语言程序设计》代替。 《Advanced Programing in Unix Envirement》 W.Richard Stevens:也是非常经典的书(废话,Stevens的书哪有不经典的!),虽然初学者就可以看,但是事实上它是《Unix Network Programing》的一本辅助资料。国内的翻译的《UNIX环境高级编程》的水平不怎么样,现在有影印版,直接读英文比读中文来 得容易。 《Unix Network Programing》W.Richard Stevens:第一卷讲BSD Socket网络编程接口和另外一种网络编程接口的,不过现在一般都用BSD Socket,所以这本书 只要看大约一半多就可以了。第二卷没有设计到网络的东西,主要讲进程间通讯和Posix线程。所以看了《APUE》以后,就可以看它了,基本上系统的东西就由 《APUE》和《UNP》vol2概括了。看过《UNP》以后,您就会知道系统编程的绝大部分编程技巧,即使卷一是讲网络编程的。国内是清华翻译得《Unix网络编程》 ,翻译者得功底也比较高,翻译地比较好。所以建议还是看中文版。 《TCP/IP祥解》一共三卷,卷一讲协议,卷二讲实现,卷三讲编程应用。我没有怎么看过。,但是据说也很经典的,因为我没有时间看卷二,所以不便评价。 《用TCP/IP进行网际互连》Douglus.E.Comer 一共三卷,卷一讲原理,卷二讲实现,卷三讲高级协议。感觉上这一套要比Stevens的那一套要好,就连Stevens也不得不承认它的第一卷非常经典。事实上,第一卷即使你没有一点网络的知识,看完以后也会对网络的来龙去脉了如指掌。第一卷中还有很多习题也设计得经典和实用,因为作者本身就是一位教师,并且卷一是国外研究生的教材。习题并没有答案,留给读者思考,因为问题得答案可以让你成为一个中级的Hacker,这些问题的答案可以象Douglus索取,不过只有他只给教师卷二我没有怎么看,卷三可以作为参考手册,其中地例子也很经典。如果您看过Qterm的源代码,就会知道Qterm的telnet实现部分大多数就是从这本书的源代码过来的。对于网络原理的书,我推荐它,而不是Stevens的《TCP/IP祥解》。 《Operating System - Design and Implement》这个是讲操作系统的书,用Minix做的例子。作者母语不是英文,所以英文看起来比较晦涩。国内翻译的是 《操作系统 设计与实现》,我没看过中文版,因为翻译者是尤晋元,他翻译的《APUE》已经让我失望头顶了。读了这本书,对操作系统的底层怎么工作的就会 有一个清晰的认识。 《Linux Device Driver》2e ,为数不多的关于Linux设备驱动程序的好书。不过内容有些杂乱,如果您没有一些写驱动的经验,初次看会有些摸不着南北。国内翻译的是《Linux设备驱动程序》第二版,第一版,第二版的译者我都有很深的接触,不过总体上来说,虽然第二版翻译的有些不尽人意,但是相比第一版来说已经超出了一大截。要读这一本书,至少应该先找一些《计算机原理》《计算机体系结构》的书来马马虎虎读读,至少应该对硬件和计算机的工作过程有一些了解。
⑽ 在linux环境下编程;
没时间写,看下对你是否有帮助....函数都是获取文件(普通文件,目录,管道,socket,字符,块()的属性。函数原型#include <sys/stat.h>int stat(const char *restrict pathname, struct stat *restrict buf);提供文件名字,获取文件对应属性。
int fstat(int filedes, struct stat *buf);通过文件描述符获取文件对应的属性。
int lstat(const char *restrict pathname, struct stat *restrict buf);连接文件描述命,获取文件属性。 2 文件对应的属性struct stat {
mode_t st_mode; //文件对应的模式,文件,目录等
ino_t st_ino; //inode节点号
dev_t st_dev; //设备号码
dev_t st_rdev; //特殊设备号码
nlink_t st_nlink; //文件的连接数
uid_t st_uid; //文件所有者
gid_t st_gid; //文件所有者对应的组
off_t st_size; //普通文件,对应的文件字节数
time_t st_atime; //文件最后被访问的时间
time_t st_mtime; //文件内容最后被修改的时间
time_t st_ctime; //文件状态改变时间
blksize_t st_blksize; //文件内容对应的块大小
blkcnt_t st_blocks; //伟建内容对应的块数量
}; 可以通过上面提供的函数,返回一个结构体,保存着文件的信息。长湖区的信息是文件的所有者和文件的模式。#include<iostream.h>//C++ 获得文件状态信息源码,C++ 获得文件所在磁盘盘符源码,C++ 文件创建时间源码,C++ 访问时间源码,C++ 最后修改日期源码,No such file or directory(无此文件或索引)#include <time.h>#include <sys/types.h>#include <sys/stat.h>#include <stdio.h>void main( void ){ struct stat buf; int result; //获得文件状态信息 result =stat( "D:\ok2002.txt", &buf ); //显示文件状态信息 if( result != 0 ) perror( "显示文件状态信息出错" );//并提示出错的原因,如No such file or directory(无此文件或索引) else { cout<<"文件大小:"<<buf.st_size<<"字节"<<endl; cout<<"所在磁盘盘符 :"; cout<<char(buf.st_dev + 'A')<<endl; cout<<"文件创建时间:"<<ctime(&buf.st_ctime); cout<<"访问日期:"<<ctime(&buf.st_atime);//注意这里访问时间为00:00:00为正常 cout<<"最后修改日期:"<<ctime(&buf.st_mtime); }}
相关函数:utimes, stat
表头文件:#include <sys/types.h>
#include <utime.h>
定义函数:int utime(const char *filename, struct utimbuf *buf)
函数说明:utime()用来修改参数filename文件所属的inode存取时间。结构utimbuf定义如下
struct utimbuf{
time_t actime; /*存取时间*/
time_t modtime; /*更改时间*/
};如果参数buf为空指针(NULL), 则该文件的存取时间和更改时间全部会设为目前时间返回值: 成功0, 失败-1, 错误代码存于errno
错误代码:
EACCESS 存取文件时被拒绝,权限不足
ENOENT 指定的文件不存在