vib 发表于 2008-12-16 12:42

“学会matlab,还用学VC++吗?”

今天一个师弟问我这个问题,我只学过C/C++的基本知识,函数,输入输出,指针,数组,
这些看起来matlab都能做到,又熟悉这两种语言的前辈给解释一下吗?
谢谢,希望各位踊跃讨论!

sogooda 发表于 2008-12-16 14:01

回复 楼主 vib 的帖子

Matlab和VC++没什么可比性。
vc++可以说是无所不能的,Matlab和VC相比目前来看很多功能还不能实现;就科学计算来说Matlab有它不可替代的优势——上手容易、开发周期短。
针对你这个问题来说,要看学科。如果不是计算机、电子类、不需要进行计算机底层的开发、不需要发布程序的那种,Matlab是个非常好的工具,但是Maltab不能替代VC之类的开发工具。

vib 发表于 2008-12-17 09:20

谢谢sogooda的回复:
能进一步举例子说说,比如那个功能用VC++可以解决,而matlab就做不了吗?

sogooda 发表于 2008-12-17 10:52

回复 板凳 vib 的帖子

这个问题可真不是三言两语能说清的,你找一本Matlab书,在找一本VC++的书,对比一下就知道区别了。
简单的说,在windows操作系统下,几乎所有的事情VC++都能做,从简单的文本处理,到复杂的应用程序的编写、底层的驱动程序等;Matlab只是一个数学工具而已。

sogooda 发表于 2008-12-17 10:59

下面是Matlab7.0的帮助文档对matlab的一个概括的说明,基本上涵盖了matlab的功能和应用领域。
VC++在功能上说,可以实现Matlab能实现的所有功能,并且还能实现除此之外的非常广泛的功能和应用。
MATLAB® is a high-performance language for technical computing. It integrates computation, visualization, and programming in an easy-to-use environment where problems and solutions are expressed in familiar mathematical notation. Typical uses include
Math and computation
Algorithm development
Data acquisition
Modeling, simulation, and prototyping
Data analysis, exploration, and visualization
Scientific and engineering graphics
Application development, including graphical user interface building

MATLAB is an interactive system whose basic data element is an array that does not require dimensioning. This allows you to solve many technical computing problems, especially those with matrix and vector formulations, in a fraction of the time it would take to write a program in a scalar noninteractive language such as C or Fortran.

The name MATLAB stands for matrix laboratory. MATLAB was originally written to provide easy access to matrix software developed by the LINPACK and EISPACK projects. Today, MATLAB engines incorporate the LAPACK and BLAS libraries, embedding the state of the art in software for matrix computation.

MATLAB has evolved over a period of years with input from many users. In university environments, it is the standard instructional tool for introductory and advanced courses in mathematics, engineering, and science. In industry, MATLAB is the tool of choice for high-productivity research, development, and analysis.

MATLAB features a family of add-on application-specific solutions called toolboxes. Very important to most users of MATLAB, toolboxes allow you to learn and apply specialized technology. Toolboxes are comprehensive collections of MATLAB functions (M-files) that extend the MATLAB environment to solve particular classes of problems. Areas in which toolboxes are available include signal processing, control systems, neural networks, fuzzy logic, wavelets, simulation, and many others.

The MATLAB System


The MATLAB system consists of five main parts:

Development Environment.   This is the set of tools and facilities that help you use MATLAB functions and files. Many of these tools are graphical user interfaces. It includes the MATLAB desktop and Command Window, a command history, an editor and debugger, and browsers for viewing help, the workspace, files, and the search path.

The MATLAB Mathematical Function Library.   This is a vast collection of computational algorithms ranging from elementary functions, like sum, sine, cosine, and complex arithmetic, to more sophisticated functions like matrix inverse, matrix eigenvalues, Bessel functions, and fast Fourier transforms.

The MATLAB Language.   This is a high-level matrix/array language with control flow statements, functions, data structures, input/output, and object-oriented programming features. It allows both "programming in the small" to rapidly create quick and dirty throw-away programs, and "programming in the large" to create large and complex application programs.

Graphics.   MATLAB has extensive facilities for displaying vectors and matrices as graphs, as well as annotating and printing these graphs. It includes high-level functions for two-dimensional and three-dimensional data visualization, image processing, animation, and presentation graphics. It also includes low-level functions that allow you to fully customize the appearance of graphics as well as to build complete graphical user interfaces on your MATLAB applications.

The MATLAB External Interfaces (API).   This is a library that allows you to write C and Fortran programs that interact with MATLAB. It includes facilities for calling routines from MATLAB (dynamic linking), calling MATLAB as a computational engine, and for reading and writing MAT-files.

[ 本帖最后由 sogooda 于 2008-12-17 11:04 编辑 ]

sogooda 发表于 2008-12-17 11:18

回复 5楼 sogooda 的帖子

Visual Studio 简介 - 来自http://msdn.microsoft.com/zh-cn/library/fx6bk1f4(VS.80).aspx

Visual Studio 是一套完整的开发工具,用于生成 ASP.NET Web 应用程序、XML Web services、桌面应用程序和移动应用程序。Visual Basic、Visual C# 和 Visual C++ 都使用相同的集成开发环境 (IDE),这样就能够进行工具共享,并能够轻松地创建混合语言解决方案。另外,这些语言使用 .NET Framework 的功能,它提供了可简化 ASP Web 应用程序和 XML Web services 开发的关键技术。

isual Studio 重要信息本节包含有关此 Visual Studio 版本中的一些最新工具和技术的信息。
Visual Studio Tools For OfficeMicrosoft Visual Studio 2005 Tools for the Microsoft Office System 使用 Visual Basic 和 Visual C# 扩展了 Word 2003 文档和 Excel 2003 工作簿,可帮助您创建解决方案。Visual Studio Tools for Office 包括新的 Visual Studio 项目,用于创建 Word 文档、Word 模板、Excel 工作簿和 Excel 模板的后台代码。有关更多信息,请参见 Office 解决方案开发概述。

Visual Web DeveloperVisual Studio 提供了一个全新的网页设计器(称为 Visual Web Developer),其中包含了许多用于创建和编辑 ASP.NET 网页和 HTML 页的增强功能。该设计器提供了比在 Visual Studio .NET 2003 中更简单、更迅速的 Web 窗体页创建方法。
Visual Web Developer 全面改进网站开发的各个领域。您可以创建网站并将其作为本地文件夹来进行维护,也可以将其放在 Internet 信息服务 (IIS) 中,或放在 FTP 或 SharePoint 服务器上进行维护。Visual Web Developer 设计器支持所有的 ASP.NET 增强功能,包括可以简化许多 Web 开发任务的近二十余种新控件。有关更多信息,请参见 Visual Studio Web 开发的新增功能。

智能设备应用程序Visual Studio 集成环境包括用于目标设备(如 PDA 和 Smartphone)的工具。改进功能包括 Visual C++ 工具和本机设备运行库、托管设计器(提供改进的特定于平台的 WYSIWYG 和多种外观设置支持)、新的仿真程序、类似于桌面的数据处理工具,以及最终用户部署项目(消除 .inf 文件的手动编辑工作)。有关更多信息,请参见智能设备项目中的新增功能。

Web 窗体Web 窗体是用于创建可编程网页的 ASP.NET 技术。Web 窗体将自己呈现为浏览器兼容的 HTML 和脚本,这使任何平台上的任何浏览器都可以查看 Web 页。使用 Web 窗体,通过将控件拖放到设计器上然后添加代码来创建 Web 页,与创建 Visual Basic 窗体的方法相似。有关更多信息,请参见 ASP.NET 网页概述。

Windows 窗体Windows 窗体用于在 .NET Framework 上创建 Microsoft Windows 应用程序。此框架提供一个有条理的、面向对象的、可扩展的类集,使您能够开发功能丰富的 Windows 应用程序。另外,Windows 窗体可作为多层分布式解决方案中的本地用户界面。有关更多信息,请参见 Windows 窗体介绍。

XML Web servicesXML Web Services 是可以通过 HTTP 使用 XML 接收请求和数据的应用程序。XML Web Services 并不依赖于特定的组件技术或对象调用约定,因此可以通过任何语言、组件模型或操作系统进行访问。在 Visual Studio 中,可以使用 Visual Basic、Visual C#、JScript 或 ATL Server 快速创建和包含 XML Web Services。有关更多信息,请参见使用托管代码进行 XML Web services 编程简介。

XML 支持可扩展标记语言 (XML) 提供描述结构数据的方法。XML 是为在 Web 上传送而进行优化了的 SGML 的子集。万维网联合会 (W3C) 定义了 XML 标准以使结构化数据保持统一并独立于应用程序。Visual Studio 完全支持 XML,同时提供了 XML 设计器,使得更容易编辑 XML 和创建 XML 架构。有关更多信息,请参见 XML 设计器。


Visual Studio Team SystemVisual Studio 2005 Team System 是一个高效、集成且可扩展的软件开发生命周期工具平台,可以帮助软件团队提高整个软件开发过程中的通信和协作能力。它由以下部分组成:
[*]Team Foundation 是可扩展的团队协作服务器,可提供工作项跟踪、源代码管理、报告和流程指南。
[*]Team Edition for Architects 是一组集成的、用于面向服务的开发的应用程序设计工具。
[*]Team Edition for Developers 提供代码质量和性能工具,使团队可以生成可靠的、任务关键的服务和应用程序。
[*]Team Edition for Testers 提供高级负载测试工具,使团队可以在部署之前验证应用程序的性能。

.NET Framework.NET Framework 是用于生成、部署和运行 XML Web Services 与应用程序的多语言环境。它由三个主要部分组成:
[*]公共语言运行库   运行库实际上在组件的运行时和开发时操作中都起到很大的作用,尽管名称中没有体现这个意思。在组件运行时,运行库除了负责满足此组件在其他组件上可能具有的依赖项外,还负责管理内存分配、启动和停止线程和进程,以及强制执行安全策略。在开发时,运行库的作用稍有变化;由于做了大量的自动处理工作(如内存管理),运行库使开发人员的操作非常简单,尤其是与今天的 COM 相比。特别是反射等功能显著减少了开发人员为将业务逻辑转变为可重用组件而必须编写的代码量。
[*]统一编程类   该框架为开发人员提供了统一的、面向对象的、分层的和可扩展的类库集 (API)。目前,C++ 开发人员使用 Microsoft 基础类,而 Java 开发人员使用 Windows 基础类。该框架统一了这些完全不同的模型,还为 Visual Basic 和 JScript 程序员提供了对类库的访问。通过创建跨所有编程语言的公共 API 集,公共语言运行库使得跨语言继承、错误处理和调试成为可能。从 JScript 到 C++ 的所有编程语言具有对框架的相似访问,开发人员可以自由选择它们要使用的语言。
[*]ASP.NET   ASP.NET 建立在 .NET Framework 的编程类的基础上,为 Web 应用程序模型提供了一组可简化 Web 应用程序生成的控件和基础结构。ASP.NET 包括可用于封装通用 HTML 用户界面元素(如文本框、按钮和列表框)的一组控件。但这些控件在 Web 服务器上运行,并以 HTML 的形式将其用户界面呈现在浏览器中。在服务器上,这些控件公布面向对象的编程模型,该模型为 Web 开发人员提供面向对象编程的丰富功能。ASP.NET 还提供基础结构服务,如状态管理和进程回收,从而可以进一步减少开发人员必须编写的代码数量,并提高应用程序的可靠性。另外,ASP.NET 使用这些同样的概念使开发人员能够以服务的形式交付软件。使用 XML Web Services 功能,ASP.NET 开发人员可以编写他们的业务逻辑,并使用 ASP.NET 基础结构通过 SOAP 交付该服务。有关更多信息,请参见使用托管代码进行 XML Web services 编程简介。


[ 本帖最后由 sogooda 于 2008-12-17 11:22 编辑 ]

rocwoods 发表于 2008-12-17 13:56

MATLAB内核用C编写的,界面是java的。严格讲,MATLAB能完成的,C一定都能完成,C++就更不用说了。如果你将来将做软件工程师,开发公司产品上的软件等等,C++一定得学,还要精通,MATLAB反而学不学都无所谓。
但是如果你想做算法工程师,主要开发各种算法,MATLAB建议一定要搞精通,此外C++也要熟悉。因为预研的话需要大量尝试各种算法,验证想法,MATLAB的方便程度以及研究效率远非C++能比。但是算法成熟后移植到产品中,就必须面对转化成C++的问题了,这就是为什么要熟悉C++的原因,但是不一定非得要达到精通的程度。这个和开发产品软件不一样,开发软件需要你对产品各模块之间的接口、逻辑关系要熟悉。搭建一个好的产品的框架、结构往往需要你有几年甚至10几年的C++编程功底才行。而把算法转化成C++,需要你了解基本的语法、以及你所面对的模块的结构就可以。其他的部分已经由专业软件工程师封装好。
话说回来,作为一门面向对象的高级语言,MATLAB现在可以办的事越来越多,理论上讲日常的各种工作已经越来越多的都能靠MATLAB完成了,只是效率问题。举个例子:小到用MATLAB发电子邮件、上网、写word文档、excel文档、操作文件,大到开发专用分析平台等等都可以只靠MATLAB完成,和VC的差距就是执行效率问题。也许在不远的将来,随着电脑硬件发展,以及MATLAB自身的发展,语言本身的效率相对于人们用它开发东西的效率不再那么重要,MATLAB也会成为一门和VC一样的开发语言。这些都很难说。
页: [1]
查看完整版本: “学会matlab,还用学VC++吗?”