Re[20]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 08.09.06 05:33
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Правда. Владелец успешного стартапа и хороший программист — совсем не одно и то же. В смысле, это может быть один и тот же человек, но сие совсем не обязательно.


верно. это также может быть хороший менеджер (что правда встречается еще реже, чем хороший программист)
но мы ведь здесь о программистах говорим, не так ли?
да и вообще не вижу смысла в противопоставлении программист vs менеджер. Потому что хороший программист должен обладать навыками менеджера, чтобы уметь организовать свою работу. А хороший менеджер должен обладать техническими навыками в предметной области, чтобы эффективно управлять.

ГВ>>>Заблуждение. Гламурное к тому же.

Д>>а давай без подонковской лексики?

ГВ> Где ты её нашёл?


а к чему ты вообще вставил здесь это слово? По смыслу оно совершенно неуместно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[5]: Дополнение
От: Дарней Россия  
Дата: 08.09.06 05:36
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>М-м-м... Следуя такой модели аргументации, я могу предположить, что следующим номером будет обсуждение на тему того, что не всякое зерно одинаково полезно, что не всякий амбар одинаково хорош, что не всякая мышь одинаково прожорлива, а некоторые крысы уничтожают мышей и потому могут быть полезны. Далее мы перейдём к обсуждению способов ловли мышей, пород кошек и моделей картофелеуборочных комбайнов.


ГВ>Понятно, что я ошибаюсь, ибо имеется бесконечное количество тем, связанных с этим
Автор: Геннадий Васильев
Дата: 06.09.06
сообщением исключительно общей лексикой. Слова, то есть, похожи.


ты конечно прав. А не припомнишь, какое отношение противостояние "мышка vs ученый" имеет к теме обсуждения синтаксиса языков?
Здесь я даже связи по общей лексике не наблюдаю.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[6]: Дополнение
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 08.09.06 06:07
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>А не припомнишь, какое отношение противостояние "мышка vs ученый" имеет к теме обсуждения синтаксиса языков?


Ну просмотри ветку, начиная отсюда
Автор: Win2k
Дата: 04.09.06
. Конкретно мышка с учёным связаны вот с этой фразой VladD2 отсюда
Автор: VladD2
Дата: 05.09.06
:

А что, прелесное дитя, с загнутыми в бабочау пальцами, ты сделал выдающегося в этой жизни?

<< Под музыку: silent >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[21]: Насколько важен синтаксис языка?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 08.09.06 06:07
Оценка:
Здравствуйте, Дарней, Вы писали:

ГВ>>Правда. Владелец успешного стартапа и хороший программист — совсем не одно и то же. В смысле, это может быть один и тот же человек, но сие совсем не обязательно.

Д>верно. это также может быть хороший менеджер (что правда встречается еще реже, чем хороший программист)
Д>но мы ведь здесь о программистах говорим, не так ли?

Мы здесь о распространёности Lisp говорим, если я не ошибаюсь.

Д>а к чему ты вообще вставил здесь это слово? По смыслу оно совершенно неуместно.


А мне показалось, что ты излишне приукрашиваешь действительность. Отсюда и "гламур".
<< Под музыку: silent >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[13]: Насколько важен синтаксис языка?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 08.09.06 06:23
Оценка:
Здравствуйте, Sinclair

Спасибо за подробное и точное описание ситуации. По крайней мере именно так все и есть в Ruby, который многое взял от SmallTalk.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[28]: Насколько важен синтаксис языка?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 08.09.06 06:48
Оценка: 1 (1) +2
Здравствуйте, VladD2

Очень простой демагогический прием -- перевод на личность собеседника. Не удивительно, что именно ты любишь затем своих собеседников в демагогии обвинять.

Тем не менее, было бы интересно послушать твое мнение о сути вопроса: почему схожие приемы в двух языках программирования не приводят к описываемым тобой проблемам? Может быть по причинам, которые хорошо были описаны Sinclair-ом?
Автор: Sinclair
Дата: 08.09.06


Итак: интересно знать, почему ты утверждаешь, что использование return-ов из блоков кода -- это проблема, а на практике этой проблемы нет.




Теперь о личном.

VD>>>Ага. А в С++ нет проблем goto, обращения к неинициализированным переменным и т.п. Достаточно послушать фанатов С++, чтобы убедиться что те у кого такие проблемы встречаются — это просто криворукие ламеры.


E>>Собственно, так и есть.


VD>Кто бы спорил. Ты один из них и есть.


Тогда тебя не затруднит привести примеры моего кода с использованием goto, неинициализированными переменными и проблемами, которые из этого вытекают. В противном случае можешь считать себя посланным по любому выбранному тобой адресу.

E>>Грабли видят (точнее, ощущают, те, кто на них наступают). Если смолторкеры говорят, что они программируют на SmallTalk и не натыкаются на эти грабли, а ты, не программируя на SmallTalk, говоришь, что видишь эти грабли...


VD>Если ты считашь, что не программируя на языке нельзя рассждать о фактах из этого языка, то это твои проблемы. Я так не считаю. Ну, уж раз ты так считашь, то в следующий раз когда начнешь рассуждать о макросах или еще чем-то вспомин свои слова и будь последователен.


Обязательно буду. Для начала нужно только подождать, чтобы на Nemerle написали столько же кода, как на SmallTalk и в мире было столько же Nemerle-стов, сколько SmallTalk-еров. Думаю, лет пять-десять у нас в переди еще есть.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[16]: Насколько важен синтаксис языка?
От: Sinclair Россия https://github.com/evilguest/
Дата: 08.09.06 07:13
Оценка: :))
Здравствуйте, VladD2, Вы писали:
VD>[c#]
VD>internal class Wildcard
Я в курсе. У МС вообще в этом плане политика достаточно закрытая. Есть масса заинтерналенного кода, который был бы крайне полезен при написании приложений.

VD>И что ты показать хотел? То что кто-то сделал внутри библиотеки поля с прекомпилирвоанными регексами?

Что кто-то считает, что проще применять регекс как черный ящик.
VD>Это как-то опровергает мои слова?
Нет. А ты думаешь, что все тебя только и хотят опровергнуть?
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[21]: Насколько важен синтаксис языка?
От: FR  
Дата: 08.09.06 07:31
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>Здравствуйте, FR, Вы писали:


FR>>Плохие программисты могут быть неплохими бизнесменами, я как минимум пару таких знаю.


Д>вероятно, они одновременно могут быть также плохими каменщиками, авторемонтниками или гинекологами.

Д>Но я не думаю, что нужно перечислять все области, в которых у человека нет талантов.
Д>Хороший бизнесмен — этого уже вполне достаточно.

Это ты к чему? Мы же вроде про стартапы в IT? Тут в выигрыше как раз комбинация хоть какой то программист и одновременно хороший бизнесмен.
Re[27]: Насколько важен синтаксис языка?
От: Курилка Россия http://kirya.narod.ru/
Дата: 08.09.06 07:36
Оценка:
Здравствуйте, eao197, Вы писали:


E>Блоки, созданные через Proc.new ведут себя так же, как блоки с ^ в SmallTalk (по крайней мере, насколько я понял из описаний смолтолкеров) -- применение в чужом контексте приведет к порождению исключения. Блоки, созданные через lambda, напротив, не прерывают работу вызвавшего их кода -- происходит возврат только из тела лямбды


Вот это гораздо интересней ST (имхо, конечно )
А можно вопрос — насколько часто применяется Proc.new? По сравнению с lambda? И есть ли вообще смысл в первом по ср. со вторым?
Re[11]: Насколько важен синтаксис языка?
От: Курилка Россия http://kirya.narod.ru/
Дата: 08.09.06 07:48
Оценка: +1
Здравствуйте, FDSC, Вы писали:

FDS>Здравствуйте, vdimas, Вы писали:


V>>Здравствуйте, Дарней, Вы писали:


Д>>>ответ очень прост — большие компании консервативны и неповоротливы, они не могут извлечь пользу из новых технологий. Но стартапы этим не страдают, и они давно бы воспользовались любой технологией, которая может дать им преимущество. Хотя бы малейшее.


V>>AutoCAD когда-то был весьма скромной программой. Им бы никто не дал хорошую расширяемую скрипт-машину по вменяемой цене на момент выхода, но зато написать интерпретатор Lisp-а способен даже студент-старшекурсник. (Примечание, VBA-среда появилась там уже в версиях, близких к 10-й, когда она стала вполне доступной по цене и наконец-то не такой уж глюкавой. Да и еще железки возмужали настолько, что стали адекватно переносить запуск среды редактирования VBA-макросов)


FDS>Да, я сам пользовался AutoCAD, но какие преимущества даёт САМ ЛИСП, а не его лёгкость написания? Мы же говорим про программирование на ЛИСП, а не про его написание. С этим никто не спорит (хотя, что знает, кто знает)


Ты не с той стороны смотришь, тебе как пользователю автокада глубоко пофигу на чём там что написано — лишь бы работало, а вот если бы ты был автором — было бы совсем иначе
А в данном топике важнее как раз точка зрения программиста как автора.
Re[33]: Насколько важен синтаксис языка?
От: Курилка Россия http://kirya.narod.ru/
Дата: 08.09.06 08:01
Оценка: +1
Здравствуйте, Beam, Вы писали:

B>Ну и повторюсь. Передача блока с возвратом в качестве параметра в метод, который не ожидает такого возврата, является логической ошибкой. С таким же успехом и в другом языке можно передать в метод неправильные параметры и нарушить работу системы.


Получается, что увеличивается связность компонентов, кроме просто определения метода, необходимо ещё для каждого блока знать, есть ли там возврат или нет, причём в определении этого метода это НЕ УКАЗАНО и нужно смотреть где этот блок создавался. Тут утверждают, что в ST методы маленькие, но толку от этого, если они обладают большей связностью? Хотя и больше гипотетической, конечно...
Re[26]: Насколько важен синтаксис языка?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 08.09.06 08:06
Оценка:
Здравствуйте, FDSC, Вы писали:

VD>>>Это возможно, но не элементарно.


ANS>>В каком-то частном случае — возможно. В общем — нет.


FDS>Приведите мне такой случай для языка со строгой статической типизацией.


_Ты_ и Влад сказали, что это возможно вы и приводите.
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[6]: Насколько важен синтаксис языка?
От: FR  
Дата: 08.09.06 08:10
Оценка: 6 (1)
Здравствуйте, Beam, Вы писали:

B>Ну как же... Ведь на этапе определения слов и закладывается в них определенный смысл. Сейчас программист классы, методы и функции разрабатывает, а потом будет слова новые придумывать и описывать их смысл.


Язык с кучей слов давно есть называется forth
Кстати и DSL'ы на нем есть где почти естественным языком проблемы описываются.
Re[7]: Насколько важен синтаксис языка?
От: Курилка Россия http://kirya.narod.ru/
Дата: 08.09.06 08:11
Оценка:
Здравствуйте, FR, Вы писали:

FR>Здравствуйте, Beam, Вы писали:


B>>Ну как же... Ведь на этапе определения слов и закладывается в них определенный смысл. Сейчас программист классы, методы и функции разрабатывает, а потом будет слова новые придумывать и описывать их смысл.


FR>Язык с кучей слов давно есть называется forth


Лисп не катит в эту категорию, хочешь сказать?
Re[22]: Насколько важен синтаксис языка?
От: nostromo  
Дата: 08.09.06 08:19
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Здравствуйте, nostromo, Вы писали:


N>>В Smalltalk тоже нельзя прервать выражение.

N>>Например:
N>>
N>>SomeClass>>foo
N>>|a b|
N>>    a := self bar. "возвращает что-то типа [:x | ^x + 42]"
N>>    b :=  a value. "сюда мы уже не попадем, потому что предыдущая строка вызовет исключение"
N>>    ...
N>>


N>>При попытке вызова этого метода в любезно предложенном отладчике мы увидим следующее (VisualWorks):

N>>
N>>cannotReturn: value 
N>>    "Raise a signal which means that the reciever attempted to return 

[code]
N>>    (with the supplied value), but its sender cannot be returned into 
N>>    (e.g. sender is nil, probably because the receiver already returned). 
N>>    This message is sent by the execution machinery (the VM or some
N>>    execution simulator such as a debugger)."

N>>    CannotReturnError new
N>>        context: self;
N>>        parameter: value;
N>>        raise
N>>


FDS>Не дошло, почему исключение было вызвано? Можно прокомментировать подробнее?


Исключение возникает при попытке выполнения оператора возврата внутри блока, помещенного в переменную a (в моих комментария выше есть ошибка, я исправился здесь
Автор: FDSC
Дата: 07.09.06
). Именно, приведенное выше сообщение cannotReturn: находится на вершине стека, а ниже лежит оператор возврата из блока. При этом в cannotReturn: в переменной self находится контекст метода bar, в котором sender=nil (это логично --- сообщение bar никто здесь не посылает), поэтому возврат из блока в данном случае вызывает исключение, а receiver --- собственно экземпляр класса SomeClass, которому послано сообщение foo.

Ситуация меняется, если блок определен в том же методе в котором вызвается. Пример здесь
Автор: FDSC
Дата: 07.09.06
.

Еще несколько слов о блоках и контекстах. Контексты могут быть вложенными:

y := 100.
x := 200.
block1 := [:x1 | [y+x1] ].
(block1 value: 3) value.


Последнее выражение вернет 103. Если вместо x1 написать x, то среда предупредит, что пременная x уже была определена вне блока, и, если оставить так, то при исполнении локальная переменная "закроет" доступ к внешней. Все равно вернется 103.

Кроме того, контексты не копируются, а передаются по ссылке:

x := 200.
block1 := [x].
block2 := [x := 3].
block2 value.
block1 value.


Последнее выражение вернет 3. Впрочем, я не видел, чтобы кто-то так писал.
Re[8]: Насколько важен синтаксис языка?
От: FR  
Дата: 08.09.06 08:38
Оценка:
Здравствуйте, Курилка, Вы писали:


FR>>Язык с кучей слов давно есть называется forth


К>Лисп не катит в эту категорию, хочешь сказать?


В лиспе главное скобки, в форте слова
Лисп конечно катит, но на форте писать DSL близкие к естественному (правда сильно императивному) языку проще, вернее большинство программ написанных в хорошем стиле так и делают.
Re[22]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 08.09.06 09:03
Оценка:
Здравствуйте, FR, Вы писали:

FR>Это ты к чему? Мы же вроде про стартапы в IT? Тут в выигрыше как раз комбинация хоть какой то программист и одновременно хороший бизнесмен.


это я к тому, что хорошего бизнесмена (менеджера) найти еще посложнее, чем хорошего программиста. Поэтому странновато называть хорошего бизнесмена плохим программистом
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[22]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 08.09.06 09:03
Оценка: +1 :)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Мы здесь о распространёности Lisp говорим, если я не ошибаюсь.


Точнее — про то, что глупо объяснять малую распространенность языка тем, что кто-то его "не понял" или "не оценил"
Кому надо — те и поймут, и оценят. Пример Грэхема здесь вполне показателен.

ГВ>А мне показалось, что ты излишне приукрашиваешь действительность. Отсюда и "гламур".


глупо
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[7]: Дополнение
От: Дарней Россия  
Дата: 08.09.06 09:03
Оценка: :)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Ну просмотри ветку, начиная отсюда
Автор: Win2k
Дата: 04.09.06
. Конкретно мышка с учёным связаны вот с этой фразой VladD2 отсюда
Автор: VladD2
Дата: 05.09.06
:


ГВ>

А что, прелесное дитя, с загнутыми в бабочау пальцами, ты сделал выдающегося в этой жизни?


Ну так привел бы ссылки на свои проекты, список научных публикаций и так далее. Чтобы, так сказать, придать весомость своим словам. В чем проблема то?
А вместо этого какие-то мутные аллегории про мышей, зерно и так далее. Не понимаю
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[28]: Насколько важен синтаксис языка?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 08.09.06 10:01
Оценка: 2 (1)
Здравствуйте, Курилка, Вы писали:

К>А можно вопрос — насколько часто применяется Proc.new? По сравнению с lambda? И есть ли вообще смысл в первом по ср. со вторым?


Proc.new применяется гораздо чаще. Просто потому, что обычная передача блока кода:
sample { return }

приводит к конструированию объекта Proc через Proc.new:
irb(main):001:0> def sample(&block)
irb(main):002:1> block.call
irb(main):003:1> end
=> nil
irb(main):004:0> sample { return }
LocalJumpError: unexpected return
        from (irb):4
        from (irb):2:in `sample'
        from (irb):4
irb(main):005:0>


Лямбда используется гораздо реже. Насколько я помню, я использую ее именно в случаях, когда нужно в одном месте определить блок кода, который будет использоваться в дальнейшем каким-то другим объектом:
class Test
    def initialize( &blk )
        @blk = blk
    end

    def do_something
        @blk.call
    end
end

t = Test.new &lambda { puts "hello"; return }
t.do_something

Если в этом примере убрать &lambda, то при обращении к t.do_something произойдет LocalJumpError.
Так же lambda применяется для формирования блоков, которые будут использоваться в другой нити.

Но lambda все же встречается крайне редко. Есть, как минимум, два объяснения:

1) return в блоках кода приходится использовать эпизодически. В основном используется тот факт, что значением блока является результат последней выполненой в блоке операции. Поэтому нет необходимости делать return. Если уж надобность в return-е возникла, значит в блоке выполняются какие-то слишком сложные действия и лучше вынести их в отдельный метод. Поэтому и получается, что основными потребителями блоков являются методы типа each и inject (у коллекций), open у File и т.п., где блоки имеют довольно тривиальный вид.

2) когда блок кода используется для определения тела метода при помощи define_method (очень частый прием при метапрограммировании) нет разницы, через Proc.new или через lambda создается блок кода, поскольку он затем выполняется через instance_eval, а там чуть другие правила.

Надобность же с return в Proc может возникнуть. Например, в примере, аналогичном показанному Beam-ом
Автор: Beam
Дата: 08.09.06
. Но такие случаи используются в локальных контекстах и проблем не вызывают именно из-за локальности контекста.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.