Что-то как...
using System.IO;
string path = Path.GetTempPath() + Path.GetRandomFileName();
while (Directory.Exists(path))
path = Path.GetTempPath() + Path.GetRandomFileName();
Directory.CreateDirectory(path);
Smalltalk был одним из первых объектно-ориентированных (OO) языков (наряду с другими, такими как Simula и Eiffel ), и можно сказать, что он чрезвычайно "чистый" в объектно-ориентированном смысле:
int
s, boolean
s и т. д.) для
, , пока
, , если
и т. д.). Звучит невозможно, но это правда! Он также стал пионером в некоторых других, теперь уже распространенных вещах:
Обратите внимание, что в настоящее время здесь только 123 вопроса о языке, который изначально задумывался как образовательный (то есть нацеленный на детей) его создателем Аланом Кей. Больше он особо не используется. Это не значит, что он не используется. В JPMorgan, например, есть большая система управления рисками для экзотических деривативов.
Smalltalk has many brilliant innovations - things we're all taking for granted today, including:
Единственная самая важная причина для Изучение Smalltalk сегодня состоит в том, что экстремальное программирование и схватка были изобретены сообществом Smalltalk ... и высоко интерактивный стиль программирования, который вы испытываете на Smalltalk, проще, мощнее и прямолинейнее, чем все, что вы можете сделать с помощью Java, C # или Ruby .. . и вы не сможете понять, насколько хорошо могут работать гибкие методы, пока не научитесь ' Я пытался заниматься экстремальным программированием на Smalltalk . Несколько других языков (во всяком случае, не основных) имеют сопоставимый набор функций
... чтобы действительно понять, что такое TDD, вам нужно использовать SUnit. JUnit просто показывает вам, где ваши тесты не прошли. SUnit на самом деле позволяет вам щелкнуть отладчик в том месте, где произошел сбой теста, и увидеть фактические объекты и то, как они связаны, чтобы вы могли увидеть, вживую в отладчике, как произошел сбой кода, и исправить это прямо здесь.
Да, Smalltalk настолько важен, что вы должны его изучить. Почему? Вы можете понять объектно-ориентированное программирование в чистой и простой форме. Люди забывают, что в «Синей книге» Smalltalk-80 только около 90 страниц посвящено языку - язык такой простой. Остальные 300 страниц рассказывают о предопределенной иерархии классов, которая является шедевром дизайна для объектно-ориентированного языка, основанного на классах, который использует единственное наследование. Вы получите гораздо более глубокое понимание объектов (например, классы - это объекты, у них есть метаклассы, и так далее до бесконечности ... за исключением того, что узел тщательно завязан, чтобы система оставалась конечной), чем вы когда-либо могли бы получить от изучения гибридного языка, такого как Java или C ++. Smalltalk важен не только из-за своей истории, но и из-за своей простоты:
Достаточно простой, чтобы вы могли понять весь язык и библиотеки
Показывает одну идею (объекты - это все, что вам нужно) доведен до крайности
Всем есть чему поучиться на Smalltalk!
I agree with the others. I'm not sure if it's important per se, but it is COOL (imho).
I love that there are no loops or conditionals in the language. If-then-else is a message sent to a boolean object. Objects of type True do one thing, objects of type False do another. (Yes, True and False are subtypes of Boolean, with a single value each, true and false respectively).
It starts out being kind of counter-intuitive, but it does give you a very interesting, and deep, view of how OO programming should work...
Smalltalk - один из первых двух оригинальных языков ООП, второй - Simula-67. Следовательно, существует два больших семейства - статически типизированная модель, основанная на вызове методов, впервые разработанная Simula (C ++, Java, C # все здесь), и модель с динамической типизацией, сосредоточенная на передаче сообщений, впервые разработанная Smalltalk (Python, Ruby принадлежат сюда.
Сегодня Smalltalk сам по себе не особенно важен - некоторые люди все еще используют его для написания материала, но он определенно не является основным. Однако его изучение даст вам некоторое представление о том, как и почему возникло ООП.
Smalltalk не только был одним из первых, но и по сей день остается образцом объектно-ориентированного проектирования языков. Более популярные языки, появившиеся позже, - C ++, Java, даже Objective-C - имеют более примитивную объектно-ориентированную среду и более строгие, чем старый добрый Smalltalk. Smalltalk имел повсеместные первоклассные объекты, отличную поддержку самоанализа во время выполнения, очень естественное использование утиной печати и замыканий, которые работали лучше, чем я видел на любом нефункциональном языке. Я имею в виду, что мы говорим о языке, который не имел собственных структур управления (if, while и т. Д.), Но мог создавать их из своей объектной системы таким образом, чтобы это работало без проблем. Насколько это круто?
В наши дни я бы не рекомендовал Smalltalk для интенсивной разработки настольных приложений (IMO просто нет жизнеспособной реализации),
Еще одна особенность SmallTalk заключается в том, что среди его выпускников Кент Бек и Уорд Каннингем. Их работа с SmallTalk породила автоматическое тестирование xUnit , шаблоны проектирования программного обеспечения , CRC-карты и другие практики, которые вошли в XP / Agile и т. Д. Таким образом, можно утверждать что SmallTalk внес большой вклад в современный ландшафт программирования.
В прошлом месяце я провел около 5 минут в презентации на конференции, посвященной истории и влиянию Smalltalk. См. Разработка на основе изображений с помощью Smalltalk . Одна из наиболее чуждых сегодняшним программистам концепций - это "
Да. Загрузите изображение морского побережья в один клик , начните использовать его с помощью учебника от Джеймса Фостера , и вы, по крайней мере, узнаете:
Если вы знаете только один объектно-ориентированный язык, вам следует рассмотреть возможность изучения второго, третьего и четвертого, чтобы получить более широкую перспективу программирования с использованием объектов. Изучение Smalltalk напрягает ваш мозг, потому что многие знакомые концепции, к которым мы привыкли в других языках (например, if-then-else, for (;;), while () и т. Д.), Отсутствуют в Smalltalk. Очевидно, есть эквиваленты, но Smalltalk работает по-другому, и изучение различных способов решения задач всегда является хорошей идеей.
Удачи.
Всего два комментария:
Smalltalk не является объектно-ориентированным, это реальные объекты, только объекты и сообщения в среде.
Smalltalk - это не язык, это среда, которая имеет язык (с таким же названием), но большая часть «магии» здесь происходит благодаря среде (изображению).
Я только начал возрождать свой интерес к Smalltalk, и, на мой взгляд, есть несколько интересных особенностей Smalltalk:
Ничего из этого не делает это особенно полезно для людей, которые не занимаются разработкой программного обеспечения. Я впервые столкнулся с этим, когда увидел пользовательский интерфейс для встроенного устройства, прототипированного на ПК с использованием Smalltalk. Это позволяло очень быстро модифицировать и тестировать пользовательский интерфейс, а по завершении предоставляло разработчикам встроенных систем «исполняемую спецификацию», которая была намного более точной, чем любой документ. Я удивлен, что не видел, чтобы эта техника использовалась гораздо чаще, чем я наблюдал в своих путешествиях за последние 20 лет.
Использование Smalltalk в качестве инструмента для создания прототипов - вот что меня интересует: я думаю, что, учитывая новую проблему, различные подходы к ее решению могут быть испробованы и проверены очень быстро и легко в среде Smalltalk, и как только желаемое решение будет найдено, оно должен быть относительно механическим, чтобы преобразовать его в Java / C ++ / C # и т. д. и т. д. На самом деле, для повторяющихся вещей вполне возможно использовать Smalltalk для генерации кода для частей решения на каком-то другом целевом языке.