Перейти к содержанию
    

я согласен, что больше свободы - больше ответственности. а вы согласны с тем, что меньше законов - больше анархии?

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

 

Закон -- это прибежище, прикрытие и оправдание несостоятельности личности. С законам скучно, но безопасно. Умелое же использование анархии даст обществу (программе) большую пользу, чем безудержное законотворчество.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

обычно подбирают человека "по лицу", а не по его уму, и отказывают умному человеку, но с безобразным лицом. Большая часть программистов так и поступают в отношении Паскаля, сливая его. Но в жизни всегда присутствуют исключения.
прямо по Фрейду! подсознательное определяет реальное :) вот она - истина! не за достоинства любим, а нелюбим за недостатки! :) главное - рожей не вышел, а то, что внутри - даже не интересует из любопытства...

 

 

Закон -- это прибежище, прикрытие и оправдание несостоятельности личности. С законам скучно, но безопасно. Умелое же использование анархии даст обществу (программе) большую пользу, чем безудержное законотворчество.
глупость, коих свет не видывал, снова высказанная бездоказательно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... почему не откликаетесь на предложение сравнить примитивнейший код, что я предложил выше? есть сомнения, что Си победит или что? давайте доказывать свою точку зрения фактами, а не словами. раз мы тут программисты - будем говорить на языках программирования, оставляя человеческие слова для комментариев :) идет? ;)

 

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

Но всё таки было б неплохо не отклоняться от темы микроконтроллеров. Для них это ещё более актуально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Но всё таки было б неплохо не отклоняться от темы микроконтроллеров. Для них это ещё более актуально.

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

 

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

 

если желаете продолжить разговор в столь же конструктивном ключе - давайте ужесточим условия: пусть длина вводимой пользователем строки не более N символов. в моей программе это будет так:

var str : string[N];
// далее по тексту

вы сделайте программу на Си с теми же ограничениями и работающую точно так же - мы в равных условиях по уязвимости переполнения. но вот остальное - давайте продолжим сравнивать.

Изменено пользователем ARV

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а я и говорил, если повезет - компилятор скажет про неиспользуемый результат :) повторяю - я Си неплохо знаю.

Оба-на! Проверка ошибок компиляции по гороскопу? Что-то новое...

 

А я могу Вас попросить прокомментировать слово "повезет". А то содается какое-то впечатление, что у Вы, действительно, свои программы пишите по принципу "повезет-не повезет".

 

А заодно кратенько нарисуйте портрет целевой группы (покупателей, потребителей) программы.

я вот подумал, может, простейший пример паскалевского кода разберем?

var str : string;
begin
   str := readln;
   writeln(str);
end.

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

 

А вообще, readln -- это что, переменная или вызов функции? Судя по синтаксису -- должна переменная. Доступ к переменным происходит очень быстро. Но мы с вами знаем, что readln -- это есть функция, которая работает намного дольше долго. Паскаль вводит нас в заблуждение. Теперь ко всем проблемам добавилась еще одна -- теперь я должен помнить кто есть переменная, кто есть вызов функции. С первого взгляда на исходники хрен поймешь.

 

Скажите мне, как быстро отработает код, который, допустим, я получил от предыдущего программера:

alpha := beta;

Конечно, это не фатально! Что бы узнать что есть beta, нужно просто поискать это имя.

 

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Оба-на! Проверка ошибок компиляции по гороскопу? Что-то новое...
не по гороскопу, а если -Wall включено (или аналогичная опция). а что оно включено - не факт.

А я могу Вас попросить прокомментировать слово "повезет". А то содается какое-то впечатление, что у Вы, действительно, свои программы пишите по принципу "повезет-не повезет".
повезет - означает, смотря в какое место я добавлю лишний знак равенства. я привел далее пример. который 100% не ворнингуется, но принципиально меняет суть операторов.

Мне кажется, что идея (целевое применение) этой гы-гы-программы настолько надумана, что ее лучше выкинуть, т.к. таких программ в жизни не бывает. Написать-то можно все что угодно. А вот продать написанное... Единственное назначение этой гы-гы-проги -- учебный момент. Больше она никуда не годится. А раз так, то какой смысл обсуждать то, чего на самом деле нет?
смысл в том, чтобы разобраться в достоинствах и недостатках языка и, заодно, в степени беспристрастности спорщиков. вы говорите - у вас инструментарий круче? продемонстрируйте. пример чисто демонстрационный - не все же время хелловорд для этой цели использовать :)

А вообще, readln -- это что, переменная или вызов функции? Судя по синтаксису -- должна переменная. Доступ к переменным происходит очень быстро. Но мы с вами знаем, что readln -- это есть функция, которая работает намного дольше долго. Паскаль вводит нас в заблуждение. Теперь ко всем проблемам добавилась еще одна -- теперь я должен помнить кто есть переменная, кто есть вызов функции. С первого взгляда на исходники хрен поймешь.
к счастью, программист на паскале не должен думать над тонкостями реализации языка, он тратит свои силы именно на решение задачи. про хрен поймешь - отметаем, т.к. это можно сказать про любой язык тому, кто с ним не знаком. про время исполнения - согласен, для функции оно больше, а разве в Си не так? когда вы работаете со стандартным вводом-выводом, вы не особенно страдаете над быстродействием стандартных функций, не так ли?

Скажите мне, как быстро отработает код, который, допустим, я получил от предыдущего программера:

Конечно, это не фатально! Что бы узнать что есть beta, нужно просто поискать это имя.

логично. и в этом сравниваемые языки не имеют различий. тип переменной знать надо. деваться некуда.

Все эти разборки примеров говорят не столько о преимуществах и недостатках того или иного языка, сколько об индивидуальных предпочтениях. Кому-то нравится спать на кафеле в переходах, а кто-то предпочетает спать на матраце в теплой квартире. Каждый вибирает себе инструмент согласно своим убеждениям и потребностям.
а вот вы сначала решите эту примитивную задачу - а потом скажете. действительно ли она не заслуживает внимания :) уверен, что не все так просто, как вам показалось. а после вашего решения мы и сравним результаты - по скорости, размеру, памяти и т.п. - по объективным параметрам. и сделаем выводы. устраивает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это игра по Вашим правилам. Не красиво поступаете.

если желаете продолжить разговор в столь же конструктивном ключе - давайте ужесточим условия: пусть длина вводимой пользователем строки не более N символов. в моей программе это будет так:

var str : string[N];
// далее по тексту

вы сделайте программу на Си с теми же ограничениями и работающую точно так же - мы в равных условиях по уязвимости переполнения.

А зачем "оно нам это надо?", да еще с такими условиями -- "с теми же ограничениями и работающую точно так же". Ой, Вы мастер на интриги и провакации!

 

Сравнивать нужно не по отдельным моментам кода, а общую картину. (Общая картина -- это и есть картина отношения Паскаль- и Си-разработок. Что может быть еще объективнее.) А то давайте начнем сравнивать длину лексем BEGIN-END с {}. Ну ведь глупость получается, правда? Так что давайте не будем лепить проблемы из двух строчек программы.

 

Да, к стати

по поводу рассуждений "все шагают в ногу, а паскалисты - не в ногу" даже и говорить не стану

Есть две огромные, но существенно отличающиеся по количеству группы людей...

Дак, кто из них идет не в ногу, первые или вторые?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

блин! совсем заморочили!

:) вместо str := readln; надо же писать readln(str); :)

 

простите великодушно, зарапортовался, переключаясь с Си на Паскаль и обратно :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

если желаете продолжить разговор в столь же конструктивном ключе - давайте ужесточим условия: пусть длина вводимой пользователем строки не более N символов. в моей программе это будет так:

var str : string[N];
// далее по тексту

вы сделайте программу на Си с теми же ограничениями и работающую точно так же - мы в равных условиях по уязвимости переполнения. но вот остальное - давайте продолжим сравнивать.

Давайте меряться :)

#include <stdio.h>
int main ()
{
    char c;
    do
    {
        c = getchar();
        putchar(c);
    }
    while (c != '\n');
    return 0;
}

Размер 15994 байт. Используемых пользовательских переменных - 1байт.

bash.exe"-3.1$ gcc -Wall -O2 ./read.c -o ./read.exe
bash.exe"-3.1$ size ./read.exe
   text    data     bss     dec     hex filename
   2644     740     224    3608     e18 ./read.exe
bash.exe"-3.1$ gcc -v
Reading specs from c:/msys/bin/../lib/gcc/mingw32/3.4.5/specs
Configured with: ../gcc-3.4.5-20060117-3/configure --with-gcc --with-gnu-ld --wi
th-gnu-as --host=mingw32 --target=mingw32 --prefix=/mingw --enable-threads --dis
able-nls --enable-languages=c,c++,f77,ada,objc,java --disable-win32-registry --d
isable-shared --enable-sjlj-exceptions --enable-libgcj --disable-java-awt --with
out-x --enable-java-gc=boehm --disable-libgcj-debug --enable-interpreter --enabl
e-hash-synchronization --enable-libstdcxx-debug
Thread model: win32
gcc version 3.4.5 (mingw-vista special r3)

P.S. у любого микроконтроллера найдётся 1 байт для этой же программы, а не пока закончится ОЗУ ;)

 

P.P.S. уж простите, поддался на провокацию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это игра по Вашим правилам. Не красиво поступаете.
да, по моим. что некрасивого? от вас не дождался предложений реально протестировать хоть что-то. предложил сам. правила вроде ясные. что не так?

А зачем "оно нам это надо?", да еще с такими условиями -- "с теми же ограничениями и работающую точно так же". Ой, Вы мастер на интриги и провакации!
в чем провокации? разве голословное утверждение. что Паскаль хуже - это не провокация? я не говорил ничего подобного, потому требую доказательств от тех, кто так говорил. я пошел на уступки - ограничил размер области памяти под строку, чтобы исходное "окружение" для обоих были одинаковы. под "работает точно так же" я имею ввиду не какие-то скрытые тонкости и микросекунды, а чисто по реакции на ввод-вывод. ОС для тестирования я так же конкретно назвал - Windows, консольное приложение. что снова не так?

Сравнивать нужно не по отдельным моментам кода, а общую картину. (Общая картина -- это и есть картина отношения Паскаль- и Си-разработок. Что может быть еще объективнее.)
гм... предлагаете протестировать упомянутый мной проект из 10000 строк, имеющий реальную ценность? ГЫ :) давайте хотя бы с этой мелочью решим... картина, как мозаика, сложится потом... может быть :)

А то давайте начнем сравнивать длину лексем BEGIN-END с {}. Ну ведь глупость получается, правда? Так что давайте не будем лепить проблемы из двух строчек программы.
будут продолжаться придирки в отношении "длинных лексем паскаля" и "экономии сил программиста" - будем и это сравнивать. будет разговор по существу - я на такие глупости не пойду :)

Да, к стати

Есть две огромные, но существенно отличающиеся по количеству группы людей...

Дак, кто из них идет не в ногу, первые или вторые?

если провести исторические, общественные и т.п. аналогии - не раз бывало так, что только один шагал в ногу, а остальные топали не в ногу :) больше всего на земле насекомых, но люди как-то считают себя царями природы... так что не в количестве дело... во всяком случае, связь неоднозначна между количеством и качеством.

 

Давайте меряться :)

P.P.S. уж простите, поддался на провокацию.

увы... пока не станем меряться. вы изменили условия задачи.

ваша программа работает не так, как моя. в моей пользователь вводит строку и жмет Enter - происходит перевод строки в консоли и выводится "эхо" строки. у вас будет посимвольное эхо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не по гороскопу, а если -Wall включено (или аналогичная опция). а что оно включено - не факт.

да-а, тогда, действительно, у Вас по жизни большие проблемы... Сочувствую.

 

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

Отладку, всестороннее тестирование и многократные прогоны перед сдачей заказчику отменяем?

При желании можно и ... сломать. Было б желание!

 

в степени беспристрастности спорщиков. вы говорите - у вас инструментарий круче? продемонстрируйте. пример чисто демонстрационный - не все же время хелловорд для этой цели использовать :)

Кому продемонстрировать? Кто будет судить? Здесь нет неангажированных судий.

 

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

Возьмите Васик -- там еще проще.

 

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

Нет, не устраивает. Как минимум мне не интересно это делать для Вас. Я банально не вижу особого смысла тратить на Вас свое время. Про судий я уже говорил. Да, и критерии оценки, условия и методы также должны быть заранее озвучены и удовлетворять обе спорящие стороны. Ничего этого нет. О чем говорить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

увы... пока не станем меряться. вы изменили условия задачи.

ваша программа работает не так, как моя. в моей пользователь вводит строку и жмет Enter - происходит перевод строки в консоли и выводится "эхо" строки. у вас будет посимвольное эхо.

Обожемой, у меня дефектный компьютер

D:\_tests>read.exe
q487vyloqwigyvhpq348qoi\
q487vyloqwigyvhpq348qoi\

D:\_tests>

Но главное результат, а не способ, за что вы и ратуете. А в данном случае он один и тот же.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Внимание! Проблема Паскаля "намбер ту".

блин! совсем заморочили!

:) вместо str := readln; надо же писать readln(str); :)

 

простите великодушно, зарапортовался, переключаясь с Си на Паскаль и обратно :)

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Обожемой, у меня дефектный компьютер

D:\_tests>read.exe
q487vyloqwigyvhpq348qoi\
q487vyloqwigyvhpq348qoi\

D:\_tests>

Но главное результат, а не способ, за что вы и ратуете. А в данном случае он один и тот же.

не совсем так. приложите исполняемый файл - что-то хочется проверить на моем компьютере :)

если вы мне объясните, как так в вашей программе получается, что ввод с немедленным выводом символа не приводит к следующему:

aabbccddee
я тут же приму вашу точку зрения, что Си круче во всем всего, что было, есть и будет во веки веков :)

 

getchar() вводит символ из консоли (при этом символ в самой консоли отображается), putchar() выводит символ в консоль. значит, по вашей программе при вводе 'a' в консоли появится первый раз символ 'a', а затем он тут же выведется обратно и появится рядом с первым. после нажатия Enter в консоли перевеедтся строка, символ введется и тут же выведется, т.е. строка переведется еще раз - после чего программа завершится. что не так в моих рассуждениях? как получается две строки из одинаковых последовательностей символов?

Изменено пользователем ARV

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот это то, о чем я талдычу!

увы... пока не станем меряться. вы изменили условия задачи.

ваша программа работает не так, как моя. в моей пользователь вводит строку и жмет Enter - происходит перевод строки в консоли и выводится "эхо" строки. у вас будет посимвольное эхо.

Вы предлагаете свои условия. Они не устравиают. Люди свои условия. Теперь Вас не устраивает. Что будем делать?

 

гм... предлагаете протестировать упомянутый мной проект из 10000 строк, имеющий реальную ценность? ГЫ давайте хотя бы с этой мелочью решим... картина, как мозаика, сложится потом... может быть

ключевая фраза выделена.

Мозайка не сложится, слишком много пазлов придется перебрать. Реально нам это не осуществить. Значит, мы не в праве по звосту, хоботу и ноге говорить о слоне. Еще раз повторяю критерий оценки -- если при свободном выборе большинство людей препочетают один продукт другому, значит он лучше.

 

Еще раз. Ваше утверждение "Паскаль не хуже Си" эквивалентно утверждению "Паскаль лучше или такой же как Си". Но мы с вами знаем, что эти языки не равнозначны и имеют разную популярность. Значит об их равенстве не может быть и речи. А это значит, что один из них лучше, другой хуже. В каких-то отдельных, выхваченных из контекста, моментах один язык будет уделывать другой. В других, также выхваченных моментах, картина будет обратная. Т.е. тут можно долго и бесполезно тратить время на споры. Но если подводить общий знаменатель, а мы все, тут присутствующие, это хотим сделать, нам нужно подняться сразу над всеми отдельно взятыми проблемами того и другого языка и оценит ситуацию в мире Си-Паскаль в целом.

 

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

 

Что мы делаем? Мы садимся и через какое-то время создаем Паскаль-компилятор. Этот компайлер на рынке востребован, и мы его продаем с тем или иным успехом, а полученные доходы пускаем на его клонирование и дальнейшее развитие. Рынок Си-компайлеров сокращается.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...