可以用这些软件写算法:1、Pycharm;2、Idea;3、iterm2;4、Grafana;5、Postman;6、Vim;7、Visual Studio;8、Jprofile。Pycharm 是一种 Python IDE,带有一整套可以帮助用户在使用 Python 语言开发时提高效率的工具。
1、Pycharm
Pycharm 是一种 Python IDE(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用 Python 语言开发时提高效率的工具,例如调试、语法高亮、项目管理、代码跳转、智能提示、单元测试、版本控制以及依赖获取等。在原始功能基础上,其内部增加了丰富的插件。推荐算法工程师日常使用中非常多的就是 Tensorflow、Keras、Pytorch、Sklearn、Numpy、Pandas 等,其中深度算法模型主要通过 Tensorflow 实现,由于 TF 不同版本的限制,用户使用 Pycharm 配合 Anonconda 可以轻松实现多 python 环境的构建,从而从容的切换多个 TF + PY 环境,实现多环境快速切换,效率开发。
Pycharm的主要功能:
- 编码协助
- 项目代码导航
- 代码分析
- Python重构
- 支持Django
- 支持Google App引擎
- 集成版本控制
- 图形页面调试器
- 集成的单元测试
2、Idea
Idea 是 Java 语言开发的集成环境,是业界公认较好的 Java 开发工具之一,其具备便捷的代码提示、代码重构、智能补全功能,除此之外与各类版本工具例如 git、svn、github 都实现了完美整合,配合可定义的创新 GUI 设计,是Java / Scala 高效开发的不二之选。随着大数据的兴起,算法工程师的很多离线任务例如数据准备、特征处理、日志分析都离不开 Spark,而线上的实时任务例如实时请求、实时推荐则离不开 Streaming、Flink,通过离线 Spark + 在线 Flink 的模式构造 pipeline 管道,Idea 无疑是开发 Java / Scala 的利器,配合多款辅助插件,可以使开发更加得心应手。
Idea的特色功能:
- 智能的选取
- 丰富的导航模式
- 历史记录功能
- JUnit的完美支持
- 对重构的优越支持
- 编码辅助
- 灵活的排版功能
- XML的完美支持
3、iterm2
iterm2 是一款功能强大的终端工具,作为代码与服务器沟通的桥梁,它支持分窗操作、自动补齐、粘贴历史、回放功能等,同时支持快捷键操作与自定义 UI,既美观又高效,正如官网说说,iterm2是 Terminal 的替代品,通过配置多个 Profiles 的 Advanced 选项,iterm2 可以实现多种自动化操作并支持多款插件,可以协助开发者更方便的进入终端并与集群完成交互。
iterm2的功能特点:
- 本地OS X的用户界面
- 同时支持PowerPC和英特尔的Mac
- Applescript支持
- 透明窗口和自定义背景图片
- Bonjour支持
- 完成VT100仿真,与更多的支持最常见的xterm和ANSI转义序列
- terminfo支持灵活的自定义键映射
- 支持选择的复制和中期按钮粘贴
4、Grafana
Grafana是一款开源的数据可视化工具,它提供了丰富的数据展示和分析功能。随着业务的不断深化与发展,业务的种类增多、服务器数量加倍、数据网络压力增加的问题也接踵而至,这些问题都不可避免的带来线上事故的增多,因此随着业务体量逐渐扩大,相对应的服务器、应用状态、数据指标都应全方位监控,并且做到指标异常提前预警,Grafana 的出现完美解决了该问题。推荐算法场景下,从用户数据触发,到模型的训练上线,再到最终模型推理得到推荐结果,这一链路都存在诸多需要监控的指标,最基本的数据库以及数据集群、例如 Mysql、Redis、Hbase 以及 Kafka 等都需要做到时序的实时监控并做到异常报警,通过辅助组件状态的可视化提高线上作业的运维效率,有效减少故障发生后的响应时间。为此 Grafana 提供了快速灵活的可视化效果,可以让数据以任何想要的形式来可视化数据,例如时间序列、表、柱状图等等。
Grafana的主要功能:
- 数据源集成
- 数据展示
- 数据分析
- 告警通知
- 插件扩展
- 权限管理
- 可视化编辑器
5、Postman
Postman 是一款强大的网页调试工具的客户端,postman 为用户提供强大的 Web API & HTTP 请求调试功能。postman 能够发送任何类型的 HTTP 请求 (Get, Post, Put, Patch, Delete …),附带任何数量的参数+ headers,是一款非常实用的调试工具。推荐算法场景下,经常需要与其他团队进行交互协作,除了采用数据库交互外,常常使用 Http 接口的形式,返回一些代码所需的基础数据信息或者上下文信息。Postman 支持 多种 http 请求类型,支持在线存储数据,方便设置请求和 header 并支持不同的认证机制,同时提供响应数据自动高亮并在页面清晰展示,通过 postman 可以在开发前快速便捷的测试 http 请求的访问速度,访问结果等,而后快速应用到于实战代码中,非常的方便。
Postman的主要功能:
- API请求发送:可以通过Postman向API发送HTTP请求,支持GET、POST、PUT、DELETE等多种请求方法。
- 参数设置:可以设置请求参数,包括请求头、请求体、查询参数等。
- 环境配置:可以设置环境变量,方便不同环境下的API请求。
- 自动化测试:可以利用Postman来编写和运行自动化测试脚本,测试API的正确性和性能。
- 文档生成:可以通过Postman创建API文档,包括API的描述、请求示例、响应示例等。
- Mock API:可以使用Postman Mock服务创建API模拟服务,让开发人员在API实际开发之前就可以测试应用程序的代码,确认它们可以与API正确交互。
- API监控:可以使用Postman监控API的性能和稳定性,提醒开发人员排查潜在问题。
- 协作:通过Postman云端平台,可以将API集成到团队的开发流程中,方便团队成员之间的协作。
6、Vim
Vim是一个类似于Vi的知名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。VIM是自由软件。Vim普遍被推崇为类Vi编辑器中较好的一个,事实上真正的劲敌来自Emacs的不同变体。1999 年Emacs被选为Linuxworld文本编辑分类的优胜者,Vim屈居第二。但在2000年2月Vim赢得了Slashdot Beanie的优异开放源代码文本编辑器大奖,又将Emacs推至二线, 总的来看, Vim和Emacs在文本编辑方面都是非常优异的。
Vim的高效率移动:
- 在插入模式之外基本上来说,尽可能少的呆在插入模式里面,因为在插入模式里面 VIM 就像一个“哑巴”编辑器一样。 VIM 的强大之处在于他的命令模式。
- 使用 h、j、k、l使用 VIM 高效率编辑的名列前茅步,就是放弃使用箭头键。使用 VIM就不用频繁的在箭头键和字母键之间移来移去了,这会节省很多时间。当命令模式时,可以用 h、j、k、l 来分别实现左、下、上、右箭头的功能。
- 在当前行里面有效的移动光标很多编辑器只提供了简单的命令来控制光标的移动(比如左、上、右、下、到行首/尾等)。VIM 则提供了很多强大的命令来满足控制光标的欲望。当光标从一点移动到另外一点,在这两点之间的文本(包括这两个点)称作被“跨过”,这里的命令也被称作是 motion。
- 在整个文件里面有效移动光标VIM 有很多命令,可以用来到达文件里面你想到达的地方。
7、Visual Studio
Microsoft Visual Studio(简称VS)是美国微软公司的开发工具包系列产品。VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等。所写的目标代码适用于微软支持的所有平台,包括Microsoft Windows、Windows Mobile、Windows CE、.NET Framework、.NET Compact Framework和Microsoft Silverlight 及Windows Phone。Visual Studio是最流行的Windows平台应用程序的集成开发环境。最新版本为 Visual Studio 2022 版本,基于.NET Framework 4.8 。2021年4月19日,微软发布 Visual Studio 2022 的为数不多的预览版。2021年6月17日,为数不多的预览版 Visual Studio 2022 Preview 1 正式发布,并且首次发布64位版本。
Visual Studio的主要功能:
- 代码编辑器:Visual Studio提供了丰富的代码编辑器功能,可轻松编写各种编程语言的代码,如C#、C++、Python等。
- 自动完成和智能提示:通过智能提示和自动完成,Visual Studio可以帮助程序员提高编码速度和准确性。
- 调试器:Visual Studio具有强大的调试功能,可以进行单步调试、条件断点等,以帮助程序员诊断和解决程序中的错误。
- 版本控制:Visual Studio集成了各种版本控制系统,如Git、Subversion等,方便程序员团队协同开发和版本管理。
- 可视化设计工具:Visual Studio具有丰富的可视化设计工具,使程序员能够通过拖拽控件、设置属性等方式,快速构建GUI界面。
- 单元测试:Visual Studio支持单元测试,可以通过自动化测试降低代码错误率,提高代码质量。
- 性能分析器:Visual Studio提供了实用的性能分析器,可以帮助程序员发现代码的性能瓶颈和提高程序性能。
- Web开发:Visual Studio支持Web开发,可以用来构建ASP.NET应用程序,提供了丰富的工具和模板。
- 数据库开发:Visual Studio提供了丰富的数据工具和模板,可以用来开发数据库应用程序。
8、Jprofile
JProfile 是一个重量级的 JVM 监控工具,提供对 JVM 的精确监控,其中堆遍历、CPU 剖析、线程剖析可视为定位当前系统瓶颈的得力工具,通过 JProfile 可以轻松定位 JVM 堆中的对象,优化内存并定位性能问题。除了可执行软件外,Jprofile 还支持 Idea 内置插件,轻松与开发环境的任务相匹配并分析,提高 JVM 代码分析能力,加速代码优化。推荐算法场景下,常见的就是召回、排序代码的构建,其中涉及很多需要优化的指标,例如与内存相关的物料库、与网络请求相关的 hbase访问速率等等,其都可以使用 JProfile 进行相关的分析,通过分析获取代码运行期间的瓶颈并作出响应优化,使得代码的编写更加合理高效。
Jprofile的主要功能:
- CPU分析
- 堆分析
- 线程分析
- 数据库分析
- Profiling会话
延伸阅读1:算法的应用
推荐算法已经应用到了各个领域的网站中,包括图书、音乐、视频、新闻、电影、地图等等。而电子商务的应用近年来逐渐普及,Amazon.com、ebay.com、Staples.com、当当网、豆瓣图书、淘宝网等都使用了电子商务推荐系统,推荐系统不止给这些互联网商家带来了巨大的附加利益,同时也提高了用户满意度,增加了用户黏性。