smalltalk

面向对象会带来哪些巨变(系列一)

荒凉一梦 提交于 2020-11-24 10:31:08
面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展过程的产物。人类对这个”发展过程“的认识经历了漫长的 人类进化的历史、经历了几千年的文明变化。 在1981年8月发行的Byte杂志上发布了有关其“面向对象”编程系统的信息。Smalltalk中的Object清楚地反映了莱布尼兹(Leibnizian)Monadic对世界的模拟:可以创建或销毁对象(单子或原子),不管它们存在或不存在。它们封装了私有数据,这些私有数据是从外部无法访问的,但是可以通过提供的函数方法或行为被访问,包括通过接收消息来更改其内部状态。至关重要的是,对象本身决定了接收消息时的处理方式,在命名过程时如果未找到对象时,这就决定了某种程度的间接性和隔离性。 充分利用面向对象的思想,利用这种软件结构方式意味着对软件的设计和构建方式有完全不同的思考。 关于如何以面向对象的方式创建软件系统的基本思想对于那些对软件系统的本质没有先入之见的人来说更为自然。 面向对象的编程消除了我们要为其构建软件的事物(业务领域或需求)与所构建软件之间的概念障碍。 第一次工业革命是蒸汽机的发明,而真正工业革命是依靠规模化的工业流程来代替手工、纺织工艺。而工业流程则依赖于标准化的、可互换的零件之间明确规定的接口。这就编程中的接口的来源。 (对象(object):由一组数据结构( 数据结构是对象的属性)和处理此结构的方法(

【干货】Python的10个特殊知识点

落爺英雄遲暮 提交于 2020-10-30 19:44:26
Python实战社群 Java实战社群 长按识别下方二维码, 按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群 ▲ 作者丨G 来源丨笑学编程 初学一门语言,往往最重要的事情不是上手操作,而且是了解这一门语言是什么样的,他的特点是什么,他能做到什么,他和其他语言的区别是? 那么今天G就给大家分享一下Python的11个不算知识的知识点。 Python 简介: Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。 Python 是初学者的语言: Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。 Python 是交互式语言: 这意味着,你可以在一个Python提示符,直接互动执行写你的程序。 Python 发展历史 Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。 Python 本身也是由诸多其他语言发展而来的,这包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的脚本语言等等。 Python 特点 1.易于学习

设计模式概述

怎甘沉沦 提交于 2020-08-14 01:28:13
一、定义   设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是 为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。 二、产生背景   肯特·贝克和沃德·坎宁安在1987年利用克里斯托佛·亚历山大在建筑设计领域里的思想开发了设计模式并把此思想应用在Smalltalk中的图形用户接口的生成中。一年后Erich Gamma在他的苏黎世大学博士毕业论文中开始尝试把这种思想改写为适用于软件开发。与此同时James Coplien 在1989年至1991 年也在利用相同的思想致力于C++的开发,而后于1991年发表了他的著作Advanced C++ Idioms。就在这一年Erich Gamma 得到了博士学位,然后去了美国,在那与Richard Helm, Ralph Johnson ,John Vlissides合作出版了Design Patterns - Elements of Reusable Object-Oriented Software 一书,在此书中共收录了23个设计模式。这四位作者在软件开发领域里也以他们的匿名著称Gang of Four(四人帮,简称GoF),并且是他们在此书中的协作导致了软件设计模式的突破。有时这个匿名GoF也会用于指代前面提到的那本书。 三、学习的意义   设计模式的本质是面向

为什么静态变量被认为是邪恶的?

生来就可爱ヽ(ⅴ<●) 提交于 2020-08-12 13:37:10
问题: I am a Java programmer who is new to the corporate world. 我是一位Java程序员,对公司领域来说是新手。 Recently I've developed an application using Groovy and Java. 最近,我已经使用 Groovy 和Java开发了一个应用程序。 All through the code I wrote used quite a good number of statics. 我编写的所有代码都使用了大量的静态变量。 I was asked by the senior technical lot to cut down on the number of statics used. 高级技术人员要求我减少使用的静电数量。 I've googled about the same, and I find that many programmers are fairly against using static variables. 我已经在谷歌上搜索了相同的内容,并且发现许多程序员都反对使用静态变量。 I find static variables more convenient to use. 我发现静态变量更易于使用。 And I presume that they are

Java零基础快速入门技巧

陌路散爱 提交于 2020-08-09 19:48:35
Java 语言的学习开始,很多同学不知道从哪入手?如果你也想知道如何从零开始学 java?怎样学 java 最有效?小编本文为你解答。 虽然 Java 面象对象很多东西都是被封装好的直接用,相对其他语言没那么复杂,但是学的东西也没有那么的 so easy,总之如果你是真想做开发,就先沉下心用心把基础打好,不要先老想着因为软件行业有市场,所以要进来分一杯羹的这种急躁心态。 另外,在编程这个行业,技术更新速度快,所以一定要具备相应的自学能力及自学意识,不然即使现在入职了 Java 相关的工作,不主动学习的话,说不定几年后你就跟不上技术要下岗了。互联网时代最快的就是更新迭代了。话不多说,下面一起来了解一下如何从零开始学 Java。 一、到相应的培训机构付费学习 别在这说培训机构没用什么的,不过一定要找正规的培训机构,不然容易被坑。培训机构里面的课程都是现在工作中需要用到的,时间短,所以可能学生消化得没那么快,基础可能也没那么快巩固,所以需要自己更加的努力。 在培训机构里学习要注意的是:勤加练习、主动自学、有问题提,不懂的尽管问老师,不然毕业后再有问题就没有这么好的机会能够直接得到有效的沟通了。 二、自学 由于是自学,所以从开始到入门会很枯燥,不一定所有的人才能坚持下来,所以如果你没有深厚的兴趣的话个人建议还是别自学编程了。 这是老师卫星:lezijie007(添加暗号:51CTO999)

Python和Java两门编程语言,学习哪个更好?

末鹿安然 提交于 2020-08-09 13:01:24
我个人不是很喜欢讨论这个问题,为什么呢,每个人都学习能力不一样,你要是不行,哪个对于你也不简单。 客观分析,这两种语言都在程序员的工具箱中都占有一席之地。学习哪个并不重要,个人觉得对于入门级同学来说,你要学的是“编程思想的基础知识“,而不是”特定的编程语言“。 那这两门语言有区别吗?当然有,对于有一定编程经验的人来说,哪个更顺滑当然能感觉都到。 非要比比呢,那就比比。 同样都功能,用Java和Python编写,一张图告诉你!Python 和 Java 的不同点: 这么看你觉得哪个简单?如果是你纯小白,我相信你看这两个哪个也不简单。 进一步分析 你玩得最6的语言就是最好的语言 能够更好地表达自己思路的语言不一定是最简单的编程语言,相反你玩儿的最6都那个就是最好的语言。 编程就像爱情,你越熟练,你就越能用这种语言创造价值。别误会我的意思,我并不是让你应该爱上任何编程语言,但是,鼓励你爱上编程的艺术。 学习基本概念非常重要,许多程序员甚至不知道设计模式是什么。这就解释了为什么公司里有人编写代码低效bug多的代码。 编程语言就是程序员的工具 例如,锤子和扳手的使用方式截然不同,螺丝刀与钢锯的用途不同,假设现在是午夜,工匠想把钉子钉在墙上,但他唯一的工具是扳手,螺丝刀和钢锯?哪个最合适?编程语言就像工具箱中的工具,如果你理解这个类比,语言就是程序员的工具。 Java历史

为什么静态变量被认为是邪恶的?

半腔热情 提交于 2020-08-08 05:14:25
问题: I am a Java programmer who is new to the corporate world. 我是一位Java程序员,对公司领域来说是新手。 Recently I've developed an application using Groovy and Java. 最近,我已经使用 Groovy 和Java开发了一个应用程序。 All through the code I wrote used quite a good number of statics. 我编写的所有代码都使用了大量的静态变量。 I was asked by the senior technical lot to cut down on the number of statics used. 高级技术人员要求我减少使用的静电数量。 I've googled about the same, and I find that many programmers are fairly against using static variables. 我已经在谷歌上搜索了相同的内容,并且发现许多程序员都反对使用静态变量。 I find static variables more convenient to use. 我发现静态变量更易于使用。 And I presume that they are

Smalltalk: How primitives are implemented?

為{幸葍}努か 提交于 2020-08-05 06:47:29
问题 I know that everything is an object and you send messages to objects in Smalltalk to do almost everything. Now how can we implement an object (memory representation and basic operations) to represent a primitive data type? For example how + for integers is implemented? I looked at the source code for Smalltalk and found this in Smallint.st . Can someone explain this piece of code? + arg [ "Sum the receiver and arg and answer another Number" <category: 'built ins'> <primitive: VMpr