Автор Тема: Squirrel  (Прочитано 35964 раз)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Squirrel
« Ответ #60 : Апрель 29, 2013, 12:50:25 pm »
Valery, ну вот я например люблю так писать:
https://github.com/ilovb/ProjectOberonV4/blob/master/OBS.Mod#L172
https://github.com/ilovb/ProjectOberonV4/blob/master/OBC.Mod#L160

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

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Squirrel
« Ответ #61 : Апрель 29, 2013, 12:58:41 pm »
Нет..
Чего "нет"? Вы вообще читали о чём я написал? Я написал об одной возможной проблеме, которая решается вложенными процедурами, ни больше, ни меньше.
Откровенно говоря, не понимаю как одно с другим связано - после кодогенерации инструкции любой процедуры могут равномерно быть размазаны по всему адресному пространству, если кодогенератор решит, что там оно будет лучше.
Y = λf.(λx.f (x x)) (λx.f (x x))

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Squirrel
« Ответ #62 : Апрель 29, 2013, 01:34:47 pm »
Откровенно говоря, не понимаю как одно с другим связано - после кодогенерации инструкции любой процедуры могут равномерно быть размазаны по всему адресному пространству, если кодогенератор решит, что там оно будет лучше.
Такой хоккейкомпилятор нам не нужен. Если процедура "размажется", будет нарезана на шматы сала, то будет и много лишних переходов, что плохо, а если это в одном фрейме и у нас есть список этих фреймов (а в рантайме и в симфайлахъ/загружаемых модулях он есть) то очень просто узнать, в какой процедуре находимся (что и делает Оберонистый рантайм, легко и непринужденно).

DddIzer

  • Гость
Re: Squirrel
« Ответ #63 : Апрель 29, 2013, 01:41:32 pm »
Нет..
Чего "нет"? Вы вообще читали о чём я написал? Я написал об одной возможной проблеме, которая решается вложенными процедурами, ни больше, ни меньше.
Читал.. и еще раз говорю нет..  - повторюсь .. мне не лень... - ЯВУ не гарантирует решение вашей проблемы  с помощью вложенных процедур ни больше, ни меньше (но конкретная реализация может) - мы ведь говорим про ЯВУ , а не про конкретную реализацию.  :D Закладываться на особенности реализации ИМХО последнее дело.
« Последнее редактирование: Апрель 29, 2013, 01:43:32 pm от DddIzer »

DddIzer

  • Гость
Re: Squirrel
« Ответ #64 : Апрель 29, 2013, 01:47:38 pm »
Valery, ну вот я например люблю так писать:
https://github.com/ilovb/ProjectOberonV4/blob/master/OBS.Mod#L172
https://github.com/ilovb/ProjectOberonV4/blob/master/OBC.Mod#L160

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

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Squirrel
« Ответ #65 : Апрель 29, 2013, 02:06:58 pm »
Нет..
Чего "нет"? Вы вообще читали о чём я написал? Я написал об одной возможной проблеме, которая решается вложенными процедурами, ни больше, ни меньше.
Читал.. и еще раз говорю нет..  - повторюсь .. мне не лень... - ЯВУ не гарантирует решение вашей проблемы  с помощью вложенных процедур ни больше, ни меньше (но конкретная реализация может) - мы ведь говорим про ЯВУ , а не про конкретную реализацию.  :D Закладываться на особенности реализации ИМХО последнее дело.
Вас может быть удивит, но люди используют в работе вполне конкретные инструменты, а не просто абстрактные парадигмы и сообщения о языках.

DddIzer

  • Гость
Re: Squirrel
« Ответ #66 : Апрель 29, 2013, 02:39:45 pm »
Вас может быть удивит, но люди используют в работе вполне конкретные инструменты, а не просто абстрактные парадигмы и сообщения о языках.
Я в курсе...  но я сомневаюсь что даже на уровне конкретного инструмента (реализации), то  о чем вы говорите четко прописано... впрочем,  хакайте и эксплойте на здоровье.. моя позиция - без КРАЙНЕЙ необходимости (то есть если вы зажаты в угол) это занятие бесперспективное.

Jordan

  • Sr. Member
  • ****
  • Сообщений: 282
    • Просмотр профиля
Re: Squirrel
« Ответ #67 : Апрель 29, 2013, 08:12:59 pm »
DddIzer

Многие неадекватные конструкции языка си были продиктованы исключительно производительностью. У меня ещё остался вопрос, какие у вас есть мысли, по поводу использования { и } в языке? Оптимизация здесь отпадает. Именно желание разработчика языка? Если так тогда, что и сколько нужно принять, что бы такое придумать. :)

В чём весь фетиш этих скобок?

Jordan

  • Sr. Member
  • ****
  • Сообщений: 282
    • Просмотр профиля
Re: Squirrel
« Ответ #68 : Апрель 29, 2013, 08:21:44 pm »
Поторопился, с вопросом. В языке limbo, тоже скобочки. Всё же именно создателям языка такое нравилось.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Squirrel
« Ответ #69 : Апрель 29, 2013, 08:22:44 pm »
Многие неадекватные конструкции языка си были продиктованы исключительно производительностью. У меня ещё остался вопрос, какие у вас есть мысли, по поводу использования { и } в языке? Оптимизация здесь отпадает. Именно желание разработчика языка? Если так тогда, что и сколько нужно принять, что бы такое придумать. :)

В чём весь фетиш этих скобок?

На самом это тоже оптимизация (ну или попытка оптимизации) производительности при наборе кода программы. Конечно, по птичности языка сям до АПЛ как до Китая, но тем не менее они старались -- Ричи с Керниганом.
{ -- короче, чем begin, а } -- короче, чем end. Вот и весь фетиш -- меньше клавиш нажимать, больше текста наберёшь, прежде чем тунельный синдром получишь )))
Для 60-70-х гг прошлого века это имело значение ещё и в плане экономии места на перфокартах, например...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Jordan

  • Sr. Member
  • ****
  • Сообщений: 282
    • Просмотр профиля
Re: Squirrel
« Ответ #70 : Апрель 29, 2013, 08:31:56 pm »
Многие неадекватные конструкции языка си были продиктованы исключительно производительностью. У меня ещё остался вопрос, какие у вас есть мысли, по поводу использования { и } в языке? Оптимизация здесь отпадает. Именно желание разработчика языка? Если так тогда, что и сколько нужно принять, что бы такое придумать. :)

В чём весь фетиш этих скобок?

На самом это тоже оптимизация (ну или попытка оптимизации) производительности при наборе кода программы. Конечно, по птичности языка сям до АПЛ как до Китая, но тем не менее они старались -- Ричи с Керниганом.
{ -- короче, чем begin, а } -- короче, чем end. Вот и весь фетиш -- меньше клавиш нажимать, больше текста наберёшь, прежде чем тунельный синдром получишь )))
Для 60-70-х гг прошлого века это имело значение ещё и в плане экономии места на перфокартах, например...

Глянул примеры на апл
http://aplwiki.com/MessageDigestHash
 :o

Прям брейнфак своего времени. :)

Теперь утолил свой интерес, по скобочкам. Суду по комментариям о си, типа стройности языка. Ценители всё же нашлись. Человек в принципе, ко всему может привыкнуть, и даже начать это восхвалять.

На стокгольмский синдром, похоже. :)

DddIzer

  • Гость
Re: Squirrel
« Ответ #71 : Апрель 30, 2013, 02:44:02 am »
Многие неадекватные конструкции языка си были продиктованы исключительно производительностью. У меня ещё остался вопрос, какие у вас есть мысли, по поводу использования { и } в языке? Оптимизация здесь отпадает. Именно желание разработчика языка? Если так тогда, что и сколько нужно принять, что бы такое придумать. :)

В чём весь фетиш этих скобок?

На самом это тоже оптимизация (ну или попытка оптимизации) производительности при наборе кода программы. Конечно, по птичности языка сям до АПЛ как до Китая, но тем не менее они старались -- Ричи с Керниганом.
{ -- короче, чем begin, а } -- короче, чем end. Вот и весь фетиш -- меньше клавиш нажимать, больше текста наберёшь, прежде чем тунельный синдром получишь )))
Для 60-70-х гг прошлого века это имело значение ещё и в плане экономии места на перфокартах, например...
где-то так, только это  было не фетишом для них ... это была фича для ленивых профессионалов -фетишом это является для остальных...

Valery

  • Full Member
  • ***
  • Сообщений: 101
    • Просмотр профиля
Re: Squirrel
« Ответ #72 : Май 01, 2013, 04:25:56 am »
Поторопился, с вопросом. В языке limbo, тоже скобочки. Всё же именно создателям языка такое нравилось.
Да элементарно, Ватсон!... :)
Чтобы меньше символов было набирать. Меньше символов - меньше возможных дурацких ошибок-опечаток.
В 69-71 году создавалось жеж... :)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Squirrel
« Ответ #73 : Май 01, 2013, 01:49:38 pm »
Поторопился, с вопросом. В языке limbo, тоже скобочки. Всё же именно создателям языка такое нравилось.
Да элементарно, Ватсон!... :)
Чтобы меньше символов было набирать. Меньше символов - меньше возможных дурацких ошибок-опечаток.
В 69-71 году создавалось жеж... :)

Одно слово - телетайп. И 1 символ в секунду. На этот раз разработчики приложений САМИ набирали свои программы.
Y = λf.(λx.f (x x)) (λx.f (x x))

Jordan

  • Sr. Member
  • ****
  • Сообщений: 282
    • Просмотр профиля
Re: Squirrel
« Ответ #74 : Май 01, 2013, 09:16:23 pm »
Ещё вопрос. Почему в си были встроены строки с символом в конце. Для нахождения длины строку требуется перебрать все символы, до конечного символа. Производительности это не прибавляет.

Можно было пойти по стопам basic, bstr строки длина строки хранится в байте или в 4 байтах, к примеру в реализациях delphi, visual basic, object pascal.

В pascale вирт сразу заложил такие строки, но они были ограничены 1 байтом, но что мешало раширить их в си 2 или 4 байтами. Не думаю, что 70-ых годах оперировали 2 гигобайтными строками.

Я знаю, что можно сделать свои динамические строки в си. Но зачем велосипедствовать, если их можно встроить. Как минимум их ненужно освобождать, что облегчает и повышает качество кода.