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

vlad

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

Как правильно заметил товарищ valexey - в Си все есть шмат памяти. При этом, когда человек ковыряется в этой памяти ему удобно видеть строки как последовательности байтов, а конец этих байтов - 0. Ему неудобно сначала видеть число, а потом отсчитывать количество байтов, чтоб узнать где конец строки :)

Вот это и сишная строка и массив char'ов и то как это будет лежать в памяти (с точностью до байта).
char s[] = {'a', 'b', 'c', '\x0'};

"размер в начале" тут будет совершенно не в тему

DddIzer

  • Гость
Re: Squirrel
« Ответ #76 : Май 01, 2013, 09:33:37 pm »
Ещё вопрос. Почему в си были встроены строки с символом в конце. Для нахождения длины строку требуется перебрать все символы, до конечного символа. Производительности это не прибавляет.

В Си  - нет  строк - есть только строковые значения (литералы). - почему? - вероятно в той области использования  под которую язык проектировался Ричи(системное программирование).. вполне хватало этой концепции... и они не стали плодить лишнюю сущность.

Jordan

  • Sr. Member
  • ****
  • Сообщений: 282
    • Просмотр профиля
Re: Squirrel
« Ответ #77 : Май 01, 2013, 09:49:54 pm »
Они ведь писали не только ос и драйвера, но и программы к ней, удобно когда систему можно написать на одном языке. Один язык, один компилятор. Если взять в пример linux, всё написано на си, как ядро, так и прикладные библиотеки, прикладные программы: sed, wget, gtk тысячи их.

Думаю врятли создатели языка, полагали, что на нём будут писать ядро в 10 млн строк.

Чем отличается язык для системного программирования и для прикладного? Помню в turbo pascal был оператор interupt. Что. в си, что в паскале нужен асм для доступа к железу, нужно создать некую прослойку. После чего асм не нужен.

Jordan

  • Sr. Member
  • ****
  • Сообщений: 282
    • Просмотр профиля
Re: Squirrel
« Ответ #78 : Май 01, 2013, 09:55:57 pm »
Когда говорят, что язык подходит для системного программирования, что под этим подразумевают? Что в си, паскаль есть асм и указатели, и одинаковые операторы, циклы, ветвления и т.д Допустим если бы создатели языка взяли pascal для реализации unix, они бы смогли создать эту систему?

DddIzer

  • Гость
Re: Squirrel
« Ответ #79 : Май 01, 2013, 10:00:15 pm »
Они ведь писали не только ос и драйвера, но и программы к ней, удобно когда систему можно написать на одном языке. Один язык, один компилятор. Если взять в пример linux, всё написано на си, как ядро, так и прикладные библиотеки, прикладные программы: sed, wget, gtk тысячи их.

Думаю врятли создатели языка, полагали, что на нём будут писать ядро в 10 млн строк.

Чем отличается язык для системного программирования и для прикладного? Помню в turbo pascal был оператор interupt. Что. в си, что в паскале нужен асм для доступа к железу, нужно создать некую прослойку. После чего асм не нужен.
вы слишком многого хотите от R&K-  они не боги, но обычные практики... как вы думаете.. а предполагали ли создатели PHP- что его будут совать в любую щель буквально через 4 года.. и вправе ли требовать от них "изысканного" дизайна...

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Squirrel
« Ответ #80 : Май 01, 2013, 10:07:30 pm »
Ещё вопрос. Почему в си были встроены строки с символом в конце. Для нахождения длины строку требуется перебрать все символы, до конечного символа. Производительности это не прибавляет.

ЕМНИП. Это особенность тех компьютеров, для которых разрабатывался Си -- PDP-7, PDP-11. Там были машинные команд для манипуляции со строками, заканчивающимися нулём.

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

Бейсик тогда был, но никакого BSTR в нём ещё не было, как не было и винды, где эти BSTR появились в visual basic.
Так же не было и паскалей с дельфями. Си разрабатывался в конце 60-х..начале 70-х годов, даже раньше паскаля...

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

Подход сей был в том, что бы сделать язык максимально близким к железу (тогдашнему) при сохранении хоть какого-то более-менее высокого уровня. То есть вот такой был выбран компромис.
to iterate is human, to recurse, divine

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

Jordan

  • Sr. Member
  • ****
  • Сообщений: 282
    • Просмотр профиля
Re: Squirrel
« Ответ #81 : Май 01, 2013, 10:09:43 pm »
Они ведь писали не только ос и драйвера, но и программы к ней, удобно когда систему можно написать на одном языке. Один язык, один компилятор. Если взять в пример linux, всё написано на си, как ядро, так и прикладные библиотеки, прикладные программы: sed, wget, gtk тысячи их.

Думаю врятли создатели языка, полагали, что на нём будут писать ядро в 10 млн строк.

Чем отличается язык для системного программирования и для прикладного? Помню в turbo pascal был оператор interupt. Что. в си, что в паскале нужен асм для доступа к железу, нужно создать некую прослойку. После чего асм не нужен.
вы слишком многого хотите от R&K-  они не боги, но обычные практики... как вы думаете.. а предполагали ли создатели PHP- что его будут совать в любую щель буквально через 4 года.. и вправе ли требовать от них "изысканного" дизайна...

Я не обвиняю и не требую. Мне просто интересно почему было сделано так, а не эдак.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Squirrel
« Ответ #82 : Май 01, 2013, 10:16:58 pm »
Когда говорят, что язык подходит для системного программирования, что под этим подразумевают? Что в си, паскаль есть асм и указатели, и одинаковые операторы, циклы, ветвления и т.д Допустим если бы создатели языка взяли pascal для реализации unix, они бы смогли создать эту систему?

У фирмы Cray была ОС для их суперкомпьютеров, написанная на паскале. Правда, потом перешли на Юникс...

Первые версии винды и макоси были написаны на паскале. Правда, потом перешли на си...

Была советская юникс-подобная OS KRONOS, написанная на модуле-2. Правда, это не совсем паскаль...

Ещё была какая-то Domain/OS -- юникс-подобная система на паскале написанная...

Да куча таких ОС было...
to iterate is human, to recurse, divine

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

Jordan

  • Sr. Member
  • ****
  • Сообщений: 282
    • Просмотр профиля
Re: Squirrel
« Ответ #83 : Май 01, 2013, 10:23:44 pm »
Когда говорят, что язык подходит для системного программирования, что под этим подразумевают? Что в си, паскаль есть асм и указатели, и одинаковые операторы, циклы, ветвления и т.д Допустим если бы создатели языка взяли pascal для реализации unix, они бы смогли создать эту систему?

У фирмы Cray была ОС для их суперкомпьютеров, написанная на паскале. Правда, потом перешли на Юникс...

Первые версии винды и макоси были написаны на паскале. Правда, потом перешли на си...

Была советская юникс-подобная OS KRONOS, написанная на модуле-2. Правда, это не совсем паскаль...

Ещё была какая-то Domain/OS -- юникс-подобная система на паскале написанная...

Да куча таких ОС было...

Ух ты я и не знал. Интересно почему, макос и виндовс, переписали на си? Производительность, проблемы с компилятороми, маркетинг?

Если убрать мифы о си, то язык си был компромиссом, между производительностью и высокоуровневостью.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Squirrel
« Ответ #84 : Май 01, 2013, 10:26:33 pm »
Когда говорят, что язык подходит для системного программирования, что под этим подразумевают? Что в си, паскаль есть асм и указатели, и одинаковые операторы, циклы, ветвления и т.д Допустим если бы создатели языка взяли pascal для реализации unix, они бы смогли создать эту систему?

У фирмы Cray была ОС для их суперкомпьютеров, написанная на паскале. Правда, потом перешли на Юникс...

Первые версии винды и макоси были написаны на паскале. Правда, потом перешли на си...
MacOS (точнее тогда еще System) никогда не была написана на паскале. Она была написана на чистом асме. А вот API был паскалевский (и доки долгое время тоже вызовы системных функций в паскаль-нотации описывали, даже после того как перешли с асма на Си).
Y = λf.(λx.f (x x)) (λx.f (x x))

DddIzer

  • Гость
Re: Squirrel
« Ответ #85 : Май 01, 2013, 10:28:55 pm »


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

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Squirrel
« Ответ #86 : Май 02, 2013, 11:49:27 am »
MacOS (точнее тогда еще System) никогда не была написана на паскале. Она была написана на чистом асме. А вот API был паскалевский (и доки долгое время тоже вызовы системных функций в паскаль-нотации описывали, даже после того как перешли с асма на Си).

Возможно. В какой-то кние я прочитал, как написали эту System и оказалось, что она заняла аж целых 128 кБт, при том что ПЗУ на тех первых маках было 64 кБт. Что бы уместить эту систему в двое меньшем объёме, эппловцам пришлось сотворить чудеса повторного использования кода...
Да, скорее всего речь и правда об ассемблере.
А может там был фортовский подход -- шитый код и всё такое? )))
to iterate is human, to recurse, divine

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

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Squirrel
« Ответ #87 : Май 02, 2013, 11:51:45 am »
MacOS (точнее тогда еще System) никогда не была написана на паскале. Она была написана на чистом асме. А вот API был паскалевский (и доки долгое время тоже вызовы системных функций в паскаль-нотации описывали, даже после того как перешли с асма на Си).

Возможно. В какой-то кние я прочитал, как написали эту System и оказалось, что она заняла аж целых 128 кБт, при том что ПЗУ на тех первых маках было 64 кБт. Что бы уместить эту систему в двое меньшем объёме, эппловцам пришлось сотворить чудеса повторного использования кода...
Да, скорее всего речь и правда об ассемблере.
А может там был фортовский подход -- шитый код и всё такое? )))
Да нет, там таки просто асм был. А паскаль-API был взят из за Лизы. Ну и прикладное ПО писалось на Паскале частенько. См. исходники первого фотошопа например.
Y = λf.(λx.f (x x)) (λx.f (x x))