CONTENTS DELETED
The author has deleted this message.
|
topaz 1> run
(Человек родился: Date сегодня) когдаРодился % [63580161 Date] a Date year 2014 dayOfYear 324 topaz 1> level 0 topaz 1> obj ** [63580161 Date] 20/11/2014 topaz 1> run Человек % [63560193 Человек class] Человек topaz 1> run Человек fileOutClass % ! ------------------- Class definition for Человек doit Object subclass: 'Человек' instVarNames: #( dateOfBirth) classVars: #() classInstVars: #() poolDictionaries: #() inDictionary: UserGlobals options: #() % doit Человек comment: '' % doit Человек category: 'User Classes' % ! ------------------- Remove existing behavior from Человек doit Человек removeAllMethods. Человек class removeAllMethods. % ! ------------------- Class methods for Человек category: 'creation' classmethod: Человек родился: aDate ^self new когдаРодился: aDate; yourself % category: 'creation' classmethod: Человек родился ^self new когдаРодился: Date сегодня; yourself % ! ------------------- Instance methods for Человек category: '' method: Человек когдаРодился ^dateOfBirth % category: 'creation' method: Человек когдаРодился: aDate dateOfBirth:= aDate % 2014-11-20 13:09 GMT-08:00 Vladimir Musulainen <[hidden email]>: > Для статьи в раздел читать текст на St легче, чем на > js/ruby/c#/pythom/lisp/добавьте_сюда_ваш_любимый_язык > нужен пример хорошо читаемого кода на смоллтолке > Сможете предложить лучше, чем придумал я? > > document := Document new. > Picture := Picture fromFile: '/Users/user/pictures/image.png'. > document insertPicture: picture onPageNumber: 1 withOffset: 100@100. > Printer default print: document. > Person take: document andPutInto: (Folder on '/Users/user/documents') > > -- > -- > http://groups.google.ru/group/sugr > --- > Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk > User Group". > Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, > отправьте письмо на электронный адрес [hidden email]. > Чтобы настроить другие параметры, перейдите по ссылке > https://groups.google.com/d/optout. -- -- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу Russian Smalltalk User Group. Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Настройки подписки и доставки писем: https://groups.google.com/d/optout. |
CONTENTS DELETED
The author has deleted this message.
|
Так, на правах мнения.
-- Я заинтересовался, в своё время, Smalltalk'ом через Io (http://iolanguage.org), который мне казался смолтоком с приличным синтаксисом. Когда я впервые полез читать код на Smalltalk у меня шевелились все волосы на теле, потому что я не понимал вообще нихрена. Если вам надо показать читабельность Smalltalk кода, то для начала надо объяснить его синтаксис хотя бы в общих чертах. После этого код на St действительно просто читается. Очень не рекомендую на хабре постить исходники с русскими именами классов и методов, вас моментально заминусуют с кучей комментариев вида "Один Эс, лол! Присваивания как в паскале, лол!" Желательно показывать исходники чего-то полезного. Например возьмите за основу одно из триллиона видео "Блог на Сисайде за 15 минут". Удачи вам с хабром :) пятница, 21 ноября 2014 г., 10:03:30 UTC+5 пользователь Vladimir Musulainen написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Читабельность дело вообще сугубо личное.
2014-11-20 21:18 GMT-08:00 Sёmka Novikov <[hidden email]>: > Так, на правах мнения. > Я заинтересовался, в своё время, Smalltalk'ом через Io > (http://iolanguage.org), который мне казался смолтоком с приличным > синтаксисом. > > Когда я впервые полез читать код на Smalltalk у меня шевелились все волосы > на теле, потому что я не понимал вообще нихрена. > > Если вам надо показать читабельность Smalltalk кода, то для начала надо > объяснить его синтаксис хотя бы в общих чертах. > > После этого код на St действительно просто читается. > > Очень не рекомендую на хабре постить исходники с русскими именами классов и > методов, вас моментально заминусуют с кучей комментариев вида "Один Эс, лол! > Присваивания как в паскале, лол!" > > Желательно показывать исходники чего-то полезного. Например возьмите за > основу одно из триллиона видео "Блог на Сисайде за 15 минут". > > Удачи вам с хабром :) > > пятница, 21 ноября 2014 г., 10:03:30 UTC+5 пользователь Vladimir Musulainen > написал: >> >> Издеваетесь? >> Я вот мало чего понял, а про читаемость.. >> >> пятница, 21 ноября 2014 г., 4:32:11 UTC+3 пользователь Саша написал: >>> >>> topaz 1> run >>> (Человек родился: Date сегодня) >>> когдаРодился >>> % >>> [63580161 Date] a Date >>> year 2014 >>> dayOfYear 324 >>> topaz 1> level 0 >>> topaz 1> obj ** >>> [63580161 Date] 20/11/2014 >>> >>> topaz 1> run >>> Человек >>> % >>> [63560193 Человек class] Человек >>> >>> >>> topaz 1> run >>> Человек fileOutClass >>> % >>> ! ------------------- Class definition for Человек >>> doit >>> Object subclass: 'Человек' >>> instVarNames: #( dateOfBirth) >>> classVars: #() >>> classInstVars: #() >>> poolDictionaries: #() >>> inDictionary: UserGlobals >>> options: #() >>> >>> % >>> >>> doit >>> Человек comment: >>> '' >>> % >>> doit >>> Человек category: 'User Classes' >>> % >>> ! ------------------- Remove existing behavior from Человек >>> doit >>> Человек removeAllMethods. >>> Человек class removeAllMethods. >>> % >>> ! ------------------- Class methods for Человек >>> category: 'creation' >>> classmethod: Человек >>> родился: aDate >>> ^self new когдаРодился: aDate; yourself >>> % >>> category: 'creation' >>> classmethod: Человек >>> родился >>> ^self new когдаРодился: Date сегодня; >>> yourself >>> % >>> ! ------------------- Instance methods for Человек >>> category: '' >>> method: Человек >>> когдаРодился >>> ^dateOfBirth >>> % >>> category: 'creation' >>> method: Человек >>> когдаРодился: aDate >>> dateOfBirth:= aDate >>> % >>> >>> 2014-11-20 13:09 GMT-08:00 Vladimir Musulainen : >>> > Для статьи в раздел читать текст на St легче, чем на >>> > js/ruby/c#/pythom/lisp/добавьте_сюда_ваш_любимый_язык >>> > нужен пример хорошо читаемого кода на смоллтолке >>> > Сможете предложить лучше, чем придумал я? >>> > >>> > document := Document new. >>> > Picture := Picture fromFile: '/Users/user/pictures/image.png'. >>> > document insertPicture: picture onPageNumber: 1 withOffset: 100@100. >>> > Printer default print: document. >>> > Person take: document andPutInto: (Folder on '/Users/user/documents') >>> > >>> > -- >>> > > -- > -- > http://groups.google.ru/group/sugr > --- > Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk > User Group". > Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, > отправьте письмо на электронный адрес [hidden email]. > Чтобы настроить другие параметры, перейдите по ссылке > https://groups.google.com/d/optout. -- -- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу Russian Smalltalk User Group. Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Настройки подписки и доставки писем: https://groups.google.com/d/optout. |
In reply to this post by vmusulainen-2
Я бы попробовал найти или сделать реальные примеры. Вдохновение (или даже готовый пример) можно поискать здесь: https://medium.com/@svenvc/elegant-pharo-code-bb590f0856d0 -- Best regards, Dennis Schetinin 21 ноября 2014 г., 1:09 пользователь Vladimir Musulainen <[hidden email]> написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Вот несколько примеров, которые нравятся лично мне: (String new: 32) collect: [ :each | 'abcdef' atRandom ] Gofer it smalltalkhubUser: 'PharoExtra' project: 'XMLSupport'; configuration; loadStable (ZnServer startDefaultOn: 8080) onRequestRespond: [ :request | ZnResponse ok: (ZnEntity with: DateAndTime now printString) ] ZnClient new queryAt: #lng put: 5.33731; queryAt: #lat put: 50.9259; queryAt: #username put: 'demo'; contentReader: [ :entity | NeoJSONReader fromString: entity contents ]; get -- Best regards, Dennis Schetinin 21 ноября 2014 г., 9:48 пользователь Dennis Schetinin <[hidden email]> написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Простой (но полностью рабочий) пример: z:= ZipArchive new. z addString: 'Hello, world!' as: 'test.txt'. z addString: 'Smalltalk Is Easy' as: '/dir/again.txt'. z writeToFileNamed: (OSEnvironment default at: 'HOME') asPath / 'test.zip'. Последнюю строчку можно для простоты заменить на z writeToFileNamed: 'test.zip'. Но, поскольку при этом файл запишется в директорию с образом, у пользователей убунты, установивших Фаро из репозитария, могут возникнуть проблемы с обнаружением этого файла. generateXLSX zip:= ZipArchive new. zip addString: self workbook_xml as: 'workbook.xml'. zip addString: self worksheet_xml as: 'worksheet.xml'. zip addString: self content_types_xml as: '[Content_Types].xml'. zip addString: self rels as: '_rels/.rels'. zip addString: self workbook_xml_rels as: '_rels/workbook.xml.rels'. zip writeToFileNamed: (FileDirectory default / workbook filename) fullName. Почти реальный пример работы "с документом" workbook := TabularWorkbook withSheets: 1. workbook filename: 'Test.xlsx'. sheet := workbook worksheets first. sheet at: 1@1 putData: '-'; at: 2@1 putData: 'colspan test'; at: 1@2 putData: 'rowspan test'; at: 2@2 putData: 777.77. (sheet cells at: 2@1) colspan: 3. (sheet cells at: 1@2) rowspan: 3. XLSXExporter exportToFile: workbook. "Почти" реальность состоит в последней строчке. Сейчас, из-за грязности кода, оно так не работает, класс XLSXExporter называется TabularExperimenting и генерировать таблицу приходится внутри этого класса. Просто потому что я писал впопыхах, лишь бы увидеть, что оно вообще может работать. Если нужно, я могу сделать так, чтобы этот пример был полностью рабочим, включая последнюю строчку. 21 ноября 2014 г., 8:58 пользователь Dennis Schetinin <[hidden email]> написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Пример из Mocketry. В общем, Mocketry была попыткой сделать максимально "прозрачный" и читаемый mocks-framework: Behavior specifications
[:mock1 :mock2 | [mock1 someMessage. mock2 someMessage2] should strictly satisfy: [mock1 someMessage willReturn: 'some'. mock2 someMessage2] ] runScenario
[:mock1 :mock2 | [mock1 someMessage. mock2 someMessage2] should lenient satisfy: [mock2 someMessage2. mock1 someMessage willReturn: 'some'] ] runScenario
[:mock1 :mock2 | [mock1 someMessage. mock2 someMessage2. ZeroDivide signal] should raise: ZeroDivide andStrictlySatisfy: [mock1 someMessage willReturn: 'some'. mock2 someMessage2] ] runScenario [:mock1 :mock2 | [mock1 someMessage. mock2 someMessage2] should not raise: ZeroDivide andStrictlySatisfy: [mock1 someMessage willReturn: 'some'. mock2 someMessage2] ] runScenario
[:mock1 :mock2 | [mock1 someMessage. mock2 someMessage2. ZeroDivide signal] should raise: ZeroDivide andLenientSatisfy: [mock2 someMessage2. mock1 someMessage willReturn: 'some'] ] runScenario [:mock1 :mock2 | [mock1 someMessage. mock2 someMessage2] should not raise: ZeroDivide andLenientSatisfy: [mock2 someMessage2. mock1 someMessage willReturn: 'some'] ] runScenario Argument constraints DSL:
Specifications on message context
Message send usage rules
Actions
StateSpec DSL:
StateSpec DSL implemented based on pragmas:Instance>>of: aClass <syntax: #(be an instance of: )> <syntax: #(be instance of: )> ^ClassSpec for: aClass And you can write both expressions: 4 should be an instance of: SmallInteger 4 should be instance of: SmallInteger 21 ноября 2014 г., 9:43 пользователь Юрий Мироненко <[hidden email]> написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Можно про прозрачную интеграцию с комплексными числами написать: http://www.squeaksource.com/Complex.html 1 i + 5 7 + 20 i 21 ноября 2014 г., 10:45 пользователь Denis Kudriashov <[hidden email]> написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Все познается в сравнении, нужно брать примеры из учебников по (C, C++, Java, Javascript и т.д.) и показывать их со Smalltalk реализацией. Сразу станет видно, что код получается компактный, интуитивный и читатель знающий другой язык программирования сможет легко понять и Smalltalk. Программа на другом языке будет как точка входа. Особенно показательно для циклов, условий, обработка коллекций 21 ноября 2014 г., 14:13 пользователь Denis Kudriashov <[hidden email]> написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Математические операции с использованием факториала 10000 factorial / 40 factorial В этом примере читателю предложить решить на знакомом ему яз. прогр. Сколько строк кода получится? 21 ноября 2014 г., 19:05 пользователь Nikolay Kleptsov <[hidden email]> написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Free forum by Nabble | Edit this page |