python和idl_有前辈对比过IDL和Python的速度吗,哪个会快点?
看到这个问题,发现国外还真有人做过对比,主要在于语言特点方面,并没有详细的定量对比,贴过来大家一起乐呵乐呵。
其实大体上就是之前几位答主所说的那样,主要区别在于:
1.资料的多少。python资料较多
2.现成的分析函数多少。IDL的遥感图像分析功能更丰富
3.开源还是闭源。
4.计算速度。
5.与其他语言的交互。
Why would I switch from IDL to Python (or not)?
by Greenfield and Jedrzejewski
We do not claim that all, or even most, current IDL users should switch to using Python now. IDL suits many people’s needs very well and we recognize that there must be a strong motivation for starting to use Python over IDL. This appendix will present the pros and cons of each so that users can make a better informed decision about whether they should consider using Python. At the end we give a few cases where we feel users should give serious consideration to using Python over IDL.
Pros and Cons are addressed below in a comparative sense. Attributes that both share, e.g., that they are interpreted and relatively slow for very simple operations, are not listed.
Pros of IDL
Mature many numerical and astronomical libraries available
Wide astronomical user base
Numerical aspect well integrated with language itself
Many local users with deep experience
Faster for small arrays
Easier installation
Good, unified documentation
Standard GUI run/debug tool (IDLDE)
Single widget system (no angst(焦虑) about which to choose or learn)
SAVE/RESTORE capability
Use of keyword arguments as flags more convenient
Cons of IDL
Narrow applicability(适用性), not well suited to general programming
Slower for large arrays
Array functionality less powerful
Table support poor
Limited ability to extend using C or Fortran, such extensions hard to distribute and support
Expensive, sometimes problem collaborating with others that don’t have or can’t afford licenses.
Closed source (only RSI can fix bugs)
Very awkward to integrate with IRAF tasks
Memory management more awkward
Single widget system (useless if working within another framework)
Plotting:Awkward support for symbols and math text
Many font systems, portability(可移植性) issues (v5.1 alleviates(减轻) somewhat)
not as flexible or as extensible(可延长的)
plot windows not intrinsically(本质地) interactive (e.g., pan & zoom)
Pros of Python
Very general and powerful programming language, yet easy to learn. Strong, but optional, Object Oriented programming support
Very large user and developer community, very extensive and broad library base
Very extensible(可延长的) with C, C++, or Fortran, portable distribution mechanisms available
Free; non-restrictive license; Open Source
Becoming the standard scripting language for astronomy
Easy to use with IRAF tasks
Basis of STScI application efforts
More general array capabilities
Faster for large arrays, better support for memory mapping
Many books and on-line documentation resources available (for the language and its libraries)
Better support for table structures
Plottingframework (matplotlib) more extensible and general
Better font support and portability(可移植性) (only one way to do it too)
Usable within many windowing(开窗口) frameworks (GTK, Tk, WX, Qt…)
Standard plotting functionality independent of framework used
plots are embeddable(可嵌入) within other GUIs
more powerful image handling (multiple simultaneous LUTS, optional resampling(重采样)/rescaling(重新调节), alpha blending, etc)
Support for many widget systems
Strong local influence over capabilities being developed for Python
Cons of Python
More items to install separately
Not as well accepted in astronomical community (but support clearly growing)
Scientific libraries not as mature:Documentation not as complete, not as unified
Not as deep in astronomical libraries and utilities
Not all IDL numerical library functions have corresponding functionality in Python
Some numeric constructs not quite as consistent with language (or slightly less convenient than IDL)
Array indexing convention “backwards”
Small array performance slower
No standard GUI run/debug tool
Support for many widget systems (angst(焦虑) regarding which to choose)
Current lack of function equivalent to SAVE/RESTORE in IDL
matplotlib does not yet have equivalents for all IDL 2-D plotting capability (e.g., surface plots)
Use of keyword arguments used as flags less convenient
Plotting:comparatively immature(不成熟的), still much development going on
missing some plot type (e.g., surface)
3-d capability requires VTK (though matplotlib has some basic 3-d capability)
Specific cases where using Python provides strong advantages over IDL
Your processing needs depend on running a few hard-to-replicate IRAF tasks, but you don’t want to do most of your data manipulation in IRAF, but would rather write your own IDL-style programs to do so (and soon other systems will be accessible from Python, e.g., MIDAS, ALMA, slang, etc)
You have algorithms that cannot be efficiently coded in IDL. They likely won’t be efficiently coded in Python either, but you will find interfacing t(界面连接)he needed C or Fortran code easier, more flexible, more portable, and distributable. (可分配的)(Question: how many distributed IDL libraries developed by 3rd parties include C or Fortran code?) Or you need to wrap existing C libraries (Python has many tools to make this easier to do).
You do work on algorithms that may migrate into STSDAS packages. Using Python means that your work will be more easily adapted as a distributed and supported tool.
You wish to integrate data processing with other significant non-numerical processing such as databases, web page generation, web services, text processing, process control, etc.
You want to learn object-oriented programming and use it with your data analysis. (But you don’t need to learn object-oriented programming to do data analysis in Python.)
You want to be able to use the same language you use for data analysis for most of your other scripting and programming tasks.
Your boss makes you.
You want to be a cool, with-it person.
You are honked off at ITT Space Systems/RSI.
Obviously using a new language and libraries entails(限定继承) time spent learning. Despite what people say, it’s never that easy, especially if one has a lot of experience and code invested in an existing language. If you don’t have any strong motivations to switch, you should probably wait.
Reproduced with permission. Copyright 2007, Association of Universities for Research in Astronomy, Inc (AURA).
相关文章:

测试用例经验谈
1.需要测试的那个类是new出来的实例; 2.被测试的类实例的对象所需要调用的接口或者对象都是mock出来的(无论是否已经有实现)。 3.所有的接口都是根据被测试的类的需要产生的,即接口属于客户(被测试的类)。 …

中国电子学会图形化四级编程题:加减法混合运算器
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】或【Python】,即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100,小马老…

Bzoj4566:[HAOI2016]找相同字符
题面 Bzoj Sol 两个串拼在一起后求出后缀数组 然后显然的\(n^2\)暴力,就是直接枚举求\(LCP\) 又由于扫的时候是对\(height\)取\(min\) 那么可以用单调栈维护每一段的贡献相同的 # include <bits/stdc.h> # define RG register # define IL inline # define Fi…

python字符照片_python图片转字符图片
python图片转字符图片代码话不多说,直接上代码。***************************#-*- coding:utf-8 -*-from PIL import ImageIMG#文件路径WIDTH60HEIGHT45ascii_char list("$B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_~<>i!lI;:,\"^…

三大基本排序专题
//以下依次是冒泡、选择、插入排序 var n,i:longint;a:array[0..20] of longint;procedure BUB;var i,j,t:longint;beginfor i:1 to n-1 dofor j:1 to n-i doif a[j]>a[j1] then begin t:a[j]; a[j]:a[j1]; a[j1]:t; end;end;procedure SEL;var i,j,k,t:longint;beginfor i:…
Linux内核中锁机制之完成量、互斥量
在上一篇博文中笔者分析了关于信号量、读写信号量的使用及源码实现,接下来本篇博文将讨论有关完成量和互斥量的使用和一些经典问题。 八、完成量 下面讨论完成量的内容,首先需明确完成量表示为一个执行单元需要等待另一个执行单元完成某事后方可执行&…

中国电子学会图形化四级编程题:绳子算法
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】或【Python】,即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100,小马老…

域名登陆出现400_域名解析错误怎么办?
可能有些人在进行域名解析时会遇到解析错误的问题,遇到这样的问题该怎么办呢?今天小编给大家整理了一些思路,希望能够提供一些帮助给大家。网站域名设置目前域名解析服务很多都是由域名供应商来设置,也有用户在网站运营期间需要更…

第02章 PyTorch基础知识
文章目录第02章 Pytorch基础知识2.1 张量2.2 自动求导2.3 并行计算简介2.3.1 为什么要做并行计算2.3.2 CUDA是个啥2.3.3 做并行的方法补充:通过股票数据感受张量概念。本图文是Datawhale组队学习Pytorch的学习笔记,主要内容包括张量的概念(0维…

一个简单的缓冲区溢出的思考
从大二开始真正接触技术开始,从最早的HTML,PHP,WEB开发。一直以为以后可能会从事开发的工作,碰巧大三上的时候和同专业的郭子,邹豪参加了南京的一个信息安全技能大赛,才真正找到了兴趣的方向,也…

Spring-boot+Vue = Fame 写blog的一次小结
前言 作为一个程序员,总是要有一个属于自己的博客。然后作为一个造轮子的程序员,肯定不满足于直接使用现有的博客系统,于是我便自己写了一个带后台管理的博客系统。 体验地址: zzzzbw.cn 技术选型 作为一个Javaer,服务…

gitee查看当前账号_upic+gitee图床,自由书写Markdown
使用的软件Typora:Markdown文档编辑器(https://www.typora.io/)upic:图床工具(https://github.com/gee1k/uPic)创建自己的GitHub图床1 创建账号https://gitee.com/,自行创建账号就可以了和github很相似,但是速度更快2创建仓库内容按照自己的习…

CentOS中vsftp安装与配置
1. 安装 使用chkconfig --list来查看是否装有vsftpd服务; 使用yum命令直接安装:yum -y install vsftpd 然后为它创建日志文件:touch /var/log/vsftpd.log 这样简单的两个命令就完成了vsftp的安装,但是如果你现在想这样ftp://your_…

纸上原型设计 VS 桌面原型工具设计,你更喜欢谁?
2019独角兽企业重金招聘Python工程师标准>>> 纸上原型设计,作为传统的原型设计方式,简单快速,成本低廉,为大部分设计师所喜爱。而桌面原型工具设计,作为伴随电脑科技发展而出现的原型设计方式,快…

韩宇:CV学习路线
CV学习路线 对于刚入门CV的同学来说,通过看视频学习效率会比看书高,如下是我亲身实践较为高效的CV学习路线。 1. 计算机视觉概述 计算机视觉本身又包括了诸多不同的研究方向,比较基础和热门的几个方向主要包括: 物体识别和检测…

mysql获取删除的条数_如何从mysql表中删除数百万条记录而不会减速
有没有一种很好的方法来删除很多记录而不会减慢网站的速度?我需要从没有索引和主键的MySQL表中删除数百万条记录。我阅读了SO和网上的各种教程,基本策略是限制删除查询,在删除之间休眠一两秒钟,然后重复此过程直至完成。我也(使用…
某大型银行深化系统之二十:异常规范
传送门 ☞ 轮子的专栏 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229 1异常抛出与捕捉规则 1.1任何抛出异常的方法必须先声明异常 {// Constructorpublic MyClass( String name ) throws NullPointerException, llegalArgumentException {...} } 1.2异常声明后…

女朋友的Mysql练习题
2019独角兽企业重金招聘Python工程师标准>>> 一、设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher…

中国电子学会图形化四级编程题:解密
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】或【Python】,即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100,小马老…

python函数模块概念_python中模块和包的概念
1.模块一个.py文件就是一个模块。这个文件的名字是:模块名.py。由此可见在python中,文件名和模块名的差别只是有没有后缀。有后缀是文件名,没有后缀是模块名。每个文件(每个模块)都是一个独立的名称空间,也就是说可以在两个(多个)…

linux-glibc内存管理小结2(内存相关系统调用的实现)
在上一节ptmalloc源码分析中我们提到dlmalloc向系统申请内存的方式有两种, 对应Linux系统下分别是sbrk()与mmap()系统调用. 本节我们就来看下brk()/sbrk()与mmap()/munmap()的实现, 作为切入点来一窥内核内存管理的特点. 在正文开始之前我们先大致描述一下内核内存管理的模型. …

【组队学习】【30期】7. CV中的Transformer
CV中的Transformer 航路开辟者:安晟领航员:尚育鹏航海士:安晟、袁明坤、闫永强 基本信息 开源内容:https://github.com/datawhalechina/dive-into-cv-pytorch [第六章]内容属性:打磨课程内容说明:17年在…

天堂Lineage(單機版)從零開始架設教學
此篇文章 內容大部份連結 已失效, 我已另外寫一篇更快速安裝的文章。 前言: 網路遊戲天堂在數年前,被日本人分析封包的方式。模擬出Lineage server端的行為。 不像天堂II,及RO是由內部洩漏出Server端程式。也由於天堂Server的熱門以至於私服人…

python爬虫天气实例scrapy_python爬虫之利用scrapy框架抓取新浪天气数据
scrapy中文官方文档:点击打开链接Scrapy是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试,Scrapy吸引人的地方在于它是一…

中国电子学会图形化四级编程题:绘制雪花
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】或【Python】,即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100,小马老…

C++ Primer 读书笔记 - 第十三章
1. Initialization和Assignment不一样。其中Initialization包括direct-initialization (如A a(...))和copy-initialization (如 A a b;) 注意A a b为copy-initialization, 而A a; A b; a b;为Assignment。 2. We cannot copy objects of the IO types, so we can…

Linux-LNMP(静态元素不记录日志和过期时间,防盗链,解析php,代理,支持ssl)
Linux-LNMP-Nginx配置二 静态文件不记录日志和过期时间Nginx防盗链Nginx访问控制Nginx解析php相关配置Nginx代理Nginx负载均衡SSL原理生成SSL密钥对Nginx配置SSL静态文件不记录日志和过期时间在Nginx服务器的虚拟主机配置文件(/usr/local/nginx/conf/vhost/norecord.conf)中定义…
mysql数据库优化命令_MySQL数据库优化总结
一个:MySQL标准数据库优化注意事项1.数据库设计(表设计合理)三范式(规范的模式)三范式包含:第一范式:1NF是对属性的原子性的约束。要求属性具有原子性,不可再分解。(仅仅要是关系型数据库都满足)第二范式:2NF是记录的唯…

C++ 卸载程序
目的:用C写一个自己的卸载程序来完成程序的卸载工作,同时运行后要删除卸载程序本身,并删除卸载程序所在的文件夹。 注:在程序退出的时候写上 自己的卸载代码。 // FileName: Uninstall.h #pragma onceclass CUninstall { private:…

《火星救援VR》原班人马打造全新AR游戏,让可爱小飞龙伴随你左右
曾开发了《火星救援》的VR团队即将发布AR游戏《Follow Me Dragon》,让可爱小飞龙“融入”真实世界。 开发商The Virtual Reality Company曾经打造过风靡一时的《火星救援》VR游戏。今日,他们刚刚发布了一款名为《Follow me Dragon》的AR游戏。 目前&…