Delphi学习的最简单/最有效方法是什么?

35

我完全是编程新手,而我选择 Delphi 作为我想要学习的编程语言。

我想构建利用套接字(sockets)填写和提交网页表单的工具,并且希望它们也是多线程的。同时,我希望它们功能丰富且能够正确运行。

我不急于完成这个项目,因为我知道任何事情都需要花费时间才能变得高效(特别是编程)。但是,我希望在学习上能够走最短的路线。

如果可能的话,我很愿意上学去学习这门语言,但似乎美国没有教授这门语言的学校。

我已经在互联网上找到了相当多的信息,帮助我对 IDE 内部工作方式和如何构建基本应用有了基本知识,但我想能够构建这些教程未教授我的真正好的应用程序。

那么..我的问题是,如果没有“真正的老师”指导我,如何成为一个专业的 Delphi 程序员?你们是如何学习的呢?

通过学习另一门编程语言并在以后回到 Delphi 学习,这样做有意义吗?


14
@Tim:对我来说,Ruby和Python似乎更加“小众”。 - Andreas Rejbrand
11
@Tim: 这不是一种小众语言;这是一种通用语言,可用于任何领域,包括Web开发。至少在Delphi团体中有一个知名博主Marco Cantu,他用Delphi编写了自己的网站。 - Mason Wheeler
3
@Tim Robinson:不是停了,只是走错方向了。 - Free Consulting
8
@Tim:不,实际上开发工作一直在持续强劲发展。自 Delphi 被剥离出 Borland 公司以来的三个版本中,语言已经有了更多的改进,比 D7 至分拆时期的整个时间段都要多。 - Mason Wheeler
3
我选择Delphi是因为这些年来我使用了许多软件,似乎我喜欢并且每天使用的每一个软件都是用Delphi编程的。其他使用VB或C#制作的软件似乎有点不稳定,无法像用Delphi制作的软件那样运行良好。我知道这听起来有点傻,但这就是事实。除此之外,我真的很喜欢Delphi比我尝试过的其他IDE。 - Gary Becks
显示剩余12条评论
11个回答

46

前Delphi产品经理Nick Hodges 创建了30个视频演示文稿,旨在帮助新手学习Delphi和Object Pascal语言。 更新于2017年:该链接已失效,可以在这里感谢archive.org查看视频。

这些视频将观众带入IDE、语言的基础知识,并且每个演示文稿大多以前一个为基础,最终创建一个不错的GUI文本编辑器。

如果您是Delphi的新手,那么这是一个很好的起点,我强烈建议您花时间观看这些视频。我已经看过所有的视频,对我帮助很大。

视频演示使用Delphi 2006,但这些演示在任何新版本(可能是旧的Delphi版本)上都是有效的。这里涵盖的主题包括:

注意:如果这些视频无法在原始托管页面上访问,则仍然可以从archive.org获取: https://web.archive.org/web/20130630143102/http://blogs.embarcadero.com/nickhodges/2006/08/15/26687

下载每个主题的ZIP文件,其中包含该主题的视频。

  • 1 - IDE简介
  • 2 - Hello World
  • 3 - 基本应用程序开发
  • 4 - 语言介绍
  • 5 - 更多语言介绍
  • 6 - 基本字符串操作
  • 7 - 基本数据类型
  • 8 - 集合
  • 9 - 数组
  • 10 - 记录
  • 11 - 基本数据
  • 12 - 简单类
  • 13 - 过程和函数
  • 14 - 单元
  • 15 - 继承
  • 16 - 多态
  • 17 - 为什么要使用OOP
  • 18 - 属性
  • 19 - 成员可见性
  • 20 - 构造函数和析构函数
  • 21 - TurboPad:关于框
  • 22 - TurboPad:文件打开
  • 23 - TurboPad:文件菜单
  • 24 - TurboPad:保存
  • 25 - TurboPad:编辑菜单
  • 26 - TurboPad:工具栏
  • 27 - TurboPad:自动换行和字体
  • 28 - 实时模板
  • 29 - 重构
  • 30 - 调试器

一旦您完成了视频学习,就可以前往Delphi Basics网站并将其加入书签。说真的,我每天大约使用这个网站10次来参考Delphi。

我还建议阅读delphi.about.com的"初学者指南Delphi编程",这是一个很好的入门教程。

此外,在我看来,学习Win32 API最重要(也是最好)的资源是Mark Russinovich的Windows操作系统内部课程,该课程免费提供。

它专门为教师教授学生而设计。我学过它,感觉非常棒。充满了例子、历史和详细解释。在我看来,这是学习Windows API的理想方式。


9
这个怎么会被踩呢?它主要是关于个人经验的 - 尽可能准确地回答了这样一个问题。 - Sertac Akyuz
4
我有点震惊和受宠若惊,那30天内完成的30个Camtasia视频依然受到了很多关注。 - Nick Hodges
我已经观看了所有这些视频(两次),这帮助我对事物有了基本的理解,但正如我在问题中所说,我正在寻求更高级的知识,以便能够很快开始制作一些真正的应用程序。 - Gary Becks
Nick的页面上的链接对我来说似乎无法使用。有人有其他链接吗? - Casey
2
Archive.org有每个视频的ZIP文件的有效链接,这些ZIP文件也包含视频:https://web.archive.org/web/20130630143102/http://blogs.embarcadero.com/nickhodges/2006/08/15/26687 - Mick
显示剩余3条评论

9

只要编写自己感兴趣的程序,遇到问题时解决它们,最终你会成为专家。

有三个要点需要记住:

  1. 如果遇到一个太大不能一次解决的问题,把它分成更小的问题一个一个地解决。

  2. 当你犹豫不决时,总是选择最简单的解决方案,然后根据需要进行升级。

  3. 谷歌知道一切。如果你不确定该查找什么,请阅读理论直到你明白为止。

例如,你说你想构建使用套接字填写和提交Web表单的工具,并且希望它们也支持多线程。

将其拆分成更小的问题。你不需要从一开始就使用多线程,所以先搁置它。你最初的任务只是学习如何提交表单。

如何做到这一点?在谷歌上搜索,阅读与HTTP相关的维基百科文章,直到你了解基础知识为止。你不必立即理解特殊的细节,只需了解哪些组件存在以及它们之间的关系即可。

然后选择最简单的解决方案。你不想从一开始就使用套接字。如果有现成的组件可以发送HTTP请求,你应该使用它们,直到你知道如何手动执行相同的操作为止。


我完全同意这个观点,但问题是有时候在解决最小的问题时,我似乎找不到答案。例如,我的目标现在是学习使用套接字提交简单的Web表单,但我无处找到信息。到目前为止,我已经买了3本书,它们基本上都教你同样的东西。当然,如果我继续尝试并不断摸索,最终我会弄清楚,但如果有更简单的学习方法可用,我宁愿采取更容易的路线来学习。 - Gary Becks
你应该查看TWebBrowser组件以便向Web表单提交数据,例如:http://www.delphifaq.com/faq/delphi/network/f249.shtml。在Google中搜索TWebBrowser并提交Web表单。 - Logman
1
我在业余时间自学编程(从Delphi6开始)。通过获取书籍、在线阅读和实践来提高自己。自己有很好的想法。花费足够的时间学习,慢慢地你可以变得越来越好。一开始尽可能保持简单。 - Logman

7
我是一个自学成才的程序员。我12岁时开始编程,当时我得到了《计算机杂志》免费分发的Delphi 4 Personal。(是的,这基本上就是为什么今天我是Delphi专家的原因。回想起来,这是Borland非常有成效的战术决策,他们通过这种方式获得了大量开发者。)
我通过研究示例和反复试验来学习所有知识。这花了我相当多的时间,但它确实奏效了。此外,由于Delphi是本地Win32编译器,要精通Delphi开发,您需要精通Win32开发。那么,一个无价的资源就是MSDN和一般的Win32编程书籍(例如微软传奇人物雷蒙德·陈(Raymond Chen)的The Old New Thing)。另外,不要忘记还有相当数量的有趣的Delphi博客
此外,如果你想成为一名更出色的程序员,你需要练习解决“难”问题。点击此处了解更多

1
值得注意的是,VCL和其他标准库组件很好地抽象出了大部分Win32内容。你可能最终需要学习其中一些,但你不必成为Win32大师才能使用Delphi。(特别是随着即将推出的跨平台版本。) - Mason Wheeler

4
几年前,我曾尝试学习Delphi,但最终因挫败而放弃。我是自学的,而且在不完整的文档和少量现有书籍的帮助下遇到了很大的困难。事后看来,过时的书籍并不像更为现代的书籍那样具有问题性,因为更为现代的书籍是针对既懂Pascal又懂Delphi的读者编写的,因此对于新手留下了很多关键信息。我当时正在进行VB6项目的移植工作,最终使用了更熟悉的.Net,因为我有VB和Java的经验。

最近,我需要编写一个需要一些直接Win32功能的小型实用程序,我认为这将是Delphi的一个好项目。小巧、快速、Win32。我重新拿出我的许可证开始再次探索。在这些年里,我学会了几种语言,对Pascal语法的理解也比以前更深入了。仅用几个小时,我就完成了我的任务,并决定尝试学习更多知识。

到目前为止,我对Delphi 5 Developer Guide印象非常深刻。它让我见识到了VCL和Delphi的优雅之处。虽然有更新版本,但我认为这个版本可能是最好的,因为它处理的是Kylix项目已经停止的Delphi版本。针对6到2006版本编写的书籍花费太多时间描述Kylix或Delphi.Net,这两个都已经过时且没有学习的必要。Delphi 5书籍与后期版本一样长,但把所有页面都用于Win32 VCL功能以及一些非常有价值的Pascal教程(这对那些没有在学校学习Pascal的人来说非常方便)。

你如何学习自 Delphi 5 以来发生的任何新事物?我认为 Bob Swart 的短篇更新书可能是最好的选择。你可以在这里找到它们。很多人也喜欢 Marco Cantu 的书,但我个人并没有发现他的书很有用。

祝好运!我期待更多建议。


2
我基本上想建立使用套接字填写和提交Web表单的工具,并希望它们也是多线程的。
如果我正确理解你的尝试...你正在从困难的一面开始...
我已经在Delphi中编程(Windows应用程序)很长时间了,我的第一次尝试使用Indy进行多线程http服务器会话失败了-即使在第一次尝试时它确实起作用(有点),但真的是悲惨的失败。因此,多线程是“棘手”或者说很难,也许。
要填写并提交Web表单-首先要弄清楚如何填写在线表单本身-这将使您了解正在发生什么,您可以使用TWebBrowser组件相当合理地完成此操作(我刚刚做到了)。然后弄清楚如何按下在线表单上的提交按钮。请记住,您将处理一个与您分离且您无法完全控制的进程。祝你好运(你也需要毅力)。

2
如果您想成为Delphi专家,那么除非我误解了您的意图,否则您还需要成为Windows专家。以下是两个很好的资源:

您将需要将示例转换为Delphi,但这也是一个不错的练习。

正如我在另一个答案中提到的那样,请查看Mark Russinovich的Windows操作系统内部课程,该课程是免费提供的。您不仅将学习Windows的工作原理,而且还是一门很好的“操作系统101”类型的课程。


2
如果可能的话,我很想去学校学习这门语言,但似乎美国没有教授这门语言的学校。这里有一个相当广泛的学校列表,它们教授ObjectPascal(Delphi)或过程式Pascal。如果你在某个地方注册了学生,你可以获得Delphi XE Professional的学术许可证,价格约为99美元。请记住,你不能使用学术许可证开发商业应用程序。
那么,我的问题是,在没有任何“真正的老师”指导下,我该如何成为专业的Delphi程序员?你们是怎么学习的?
语言语法并不是非常难掌握,特别是大多数IDE给你的帮助。学习Delphi库(RTL/VCL)需要更长时间。不是因为它很难(恰恰相反),而是它提供了太多的功能。我只使用Delphi约5年,但我认识的开发人员自版本1以来一直在编写Delphi程序,他们仍然会对他们不知道存在的功能感到惊讶。
但是,即使学习图书馆并不能让优秀的开发者与其他人有所区别。最难掌握的是设计技能。知道何时使用继承和何时使用组合,知道何时选择多态性或条件语句,学习设计和架构模式,并学习它们何时适用以及何时不适用。学习如何从识别问题到实施解决方案,编写易于测试和易于维护的代码以应对新需求的出现。
其中一些技能可以通过阅读书籍或向导师学习获得,而其他技能只能通过经验学习。

1

我支持上面所说的话。此外,我建议选择一个非平凡的项目,使用Delphi编写它!选择一个你一直想要但尚未找到完全符合需求的工具,或者选择一个你已经使用过并想看看是否可以在Delphi中开发类似的东西。那就是我学习Delphi的方法...(我仍在学习。我大约3个月前开始使用Delphi,但这不是我的第一语言,所以有些知识具有可转移性。但是我想想,我希望我最初就学习了Delphi!) 你也可能听过许多次,但请阅读好的、精心编写的代码!每当我了解一个新的Delphi函数时,我尝试花些时间阅读其实现,并通过这种方式学到了一些东西!


1

似乎并不是每个人都能成为一名优秀的程序员(另请参见 Joel的评论),因为有些人似乎很难理解指针和递归等基本概念,这表明他们的一些问题解决技能存在缺陷。也许你就是那种人,也许不是。

话虽如此,我认为你应该先学习问题抽象化、编程逻辑,在至少了解基本数据结构(数组、列表、字典、记录、类、树等)和一些基本软件设计(MVC,也许是面向对象的设计概念等等)之前。

Dijkstra似乎认为,在编写任何代码之前,能够充分理解问题并构建解决方案是更好的选择,因为这会导致更高质量的软件。

获取有关编程和数据结构的好书。参加课程也是一个好主意,不管它们是否专门针对Delphi,因为软件设计的概念不依赖于特定语言,并且知识可以从一种语言传递到另一种语言。

显然,您应该尝试实践所学的知识。进行大量练习,但要尝试真正地理解您正在做什么,并且当事情出错时,试着理解原因。

无论如何,如果您真正想要构建一个应用程序,那么请跳过以上所有步骤,采用试错方法。


实际上,我最终想要构建许多不同的应用程序。但现在,我想从我心中所拥有的一个小项目开始,然后再继续发展。 感谢您的意见。 - Gary Becks

1

Delphi非常优秀。

我是在美国的课堂上通过三天的课程学习了这些工具。这是一个巨大的收益和一个很好的起点。

然后我回到办公室开始编写我需要的、实际使用的程序,并且持续使用了相当长的一段时间。我不断地改进这些程序。使用自己开发的工具和理解用户视角是至关重要的。

为了迈出下一步,成为一名优秀的程序员,学习工具已经远远不够。你应该有一些正式的教育来学习一些基本原则。我在学习Delphi之前就已经有了这个基础。这并不意味着你不能自学,但你无法通过试错来学习这些基本原则。

学习设计模式

考虑最佳实践。实质上,利用最佳实践可以让你从其他人的错误中学习,而不是你自己的错误。如果其他人都采用某种方法,那么这种方法长期以来一定被证明是可靠的。

接受通用UI原则。如果你的UI与其他人的UI表现一致,那么用户将知道如何使用它而不必阅读文档。

学习软件开发生命周期,例如敏捷系统开发生命周期。

你应该编写另一个文本编辑器,并使用它。你还应该编写一些以前没有人做过的程序。

今天就写点什么吧。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接