Вы ребяты редкосные мозгоебы (без обид, сам почти такой же), из-за частностей готовы друг другу глотку рвать. Ну что ну asm ну ц ну вижуал ц ну как там этот ваш как его... блин... ".нет". Ессно при усложнении задач приходится постоянно переходить на новые уровни абсракции (пардон...абасракции) при сохранении среднего уровня затрат человеко-часов на задачу. И это ни как не говорит о улучшеении отказоустойчивости нового программного комплекса - это вроде даже практически не связанные друг с другом вопросы. И что опять получается банальность типа "нет предела совершенству - и не надо".
[Ответ]
zss_vrn 06:48 23.04.2004
Абыр
Сообщение от :
Вы ребяты редкосные мозгоебы (без обид, сам почти такой же)
Ну, какие тут обиды. При случае оторвем голову, и всех делов
Сообщение от :
Ессно при усложнении задач приходится постоянно переходить
А задачи-то не всегда усложняются сами по себе. Я думаю, усложняется непонимание между заказчиком и исполнителем. То есть все чаще приходится начинать работу без ясного представления того, что должно получиться в конце. ИМХО, разумеется, но не только на личном опыте основываюсь.
Сообщение от :
при сохранении среднего уровня затрат человеко-часов на задачу.
Ну, брат, это как считать. Мне кажется, трудоемкость растет.
Сообщение от :
И это ни как не говорит о улучшеении отказоустойчивости нового программного комплекса
Как это не сказывается? Чем сложнее система, тем больше вероятность отказа.
[Ответ]
zic 10:45 23.04.2004
А задачи-то не всегда усложняются сами по себе. Я думаю, усложняется непонимание между заказчиком и исполнителем. То есть все чаще приходится начинать работу без ясного представления того, что должно получиться в конце. ИМХО, разумеется, но не только на личном опыте основываюсь.
Ну дык это всегда так , не может разработчик знать что нужно заказчику сразу , ведь сам заказчик это понимает в общих чертах (в лучшем случае)
ДЛя этого и используют итерационный метод разработки .
Как это не сказывается? Чем сложнее система, тем больше вероятность отказа
НЕ все так просто .
Очевидно что значительная программа на асме будет гораздо менее надежна чем аналогичная на С .
[Ответ]
Alex__G 11:33 23.04.2004
Абыр
Улучшение отказоустойчивости происходит за счет использования кода стандартных библиотек, которые используются миллионами программеров и соответсвенно ошибки в них находят очень быстро и оперативно исправляют.
[Ответ]
zss_vrn 12:41 23.04.2004
zic
Сообщение от :
Ну дык это всегда так , не может разработчик знать что нужно заказчику сразу
Конечно, это так и есть, и всегда было, но сейчас ситуация ухудшается. ИМХО, разумеется.zic
Сообщение от :
Очевидно что значительная программа на асме будет гораздо менее надежна чем аналогичная на С .
Да, но ведь программа на асме будет СЛОЖНЕЕ, именно потому и менее надежна
Alex__G
Я бы сказал - "в том числе".
Еще и квалификация программистов, правильно построенный процесс разработки и тестирования, сложность самой задачи... То есть факторов-то много. Разумеется, использование стандартных библиотек и подходов улучшает качество.
[Ответ]
Сообщение от :
Да, но ведь программа на асме будет СЛОЖНЕЕ, именно потому и менее надежна
Программа остаётся той же самой вне зависимости от того на каком языке программирования её писать. Те же алгоритмы, те же структуры данных и т. п.
Программа на асме менее надёжна вовсе не из-за своей "сложности".
[Ответ]
Сообщение от :
Программа остаётся той же самой вне зависимости от того на каком языке программирования её писать.
Не согласен. На асме программа будет содержать БОЛЬШЕЕ количество строк текста, значит, будет сложнее и менее надежна.
[Ответ]
Alex__G 18:32 26.04.2004
Rabbit
Может быть она такой и остается, но попробуй вернуться к этому коду месяцев через 9 чтобы внести исправления. А если придется разбирать чужой код?
Кроме того есть такая очень важная характеристика maintainability. Ее значение у большой программы на ассемблере ниже плинтуса.
zss_vrn
Согласен. Причем синтаксис у ассемблера хорошо "закрывает" собой алгоритм.
[Ответ]
Rabbit 21:34 26.04.2004
zss_vrn
Alex__G
А почему вы считаете, что это сложность именно ПРОГРАММЫ? Может для вас "исходный код"="программа? А я тогда возьму и напишу три проги на си, ассемблере и дельфи, так чтобы внешний вид был одинаков и функции выполняли одни и те же. Исходники разные, и для асма даже размером будут больше, но любой пользователь скажет, что это одна и та же программа - они же не отличаются...
В общем, прежде чем начинать спор, надо определиться с терминами, а там может и спорить не о чем будет.
[Ответ]
zss_vrn 08:02 27.04.2004
Rabbit
Сообщение от :
надо определиться с терминами
Согласен
Что такое сложность? По моему - прежде всего размер проекта в смысле его внутреннего устройства (т.е. исходников) и еще наличие большого количества связей между элементами проекта. Размер - не в количестве байт текста, а в количестве операторов, так как имена, например, в С++ длиннее.
При прочих равных условиях программа на асме будет СЛОЖНЕЕ программы на С++. Хотя бы потому, что ООП на асме - дело довольно экзотическое
Кстати, программа для меня - все же исходный текст, а не исполняемый модуль.
[Ответ]
Alex__G 11:17 27.04.2004
Rabbit
А что еще можно вложить в понятие программа? (другое дело программный продукт)
Давай будем рассматривать понятие сложность с позиции программистов. Потому что сколько пользователей - столько и мнений. С программистами все более менее одинаково.
В понятие сложность предлагаю включить:
-функциональность
-maitainability.
[Ответ]
Rabbit 17:15 27.04.2004
Alex__G
Сообщение от :
А что еще можно вложить в понятие программа?
Например: "программа - последовательность действий конечного автомата"; "программа - это набор определенных действий, приводящий к определенному необходимому результату".
Исходный код - это не набор(последовательность) действий, это их(действий) описание. Уже компилятор или интерпретатор эти описания переводят собственно в действия.
Хотя, можно привести такое определение программы, что она окажется исходным кодом. Но я с этим категорически не согласен.
Сообщение от :
Программа - согласно ГОСТ 19781-90 - данные, предназначенные для управления конкретными компонентами системы обработки информации в целях реализации определенного алгоритма.
Сообщение от :
Программа для ЭВМ - по законодательству РФ - объективная форма представления совокупности данных и команд, предназначенных для функционирования ЭВМ и других компьютерных устройств с целью получения определенного результата, включая подготовительные материалы, полученные в ходе разработки программы для ЭВМ, и порождаемые ею аудиовизуальные отображения
Сообщение от :
В понятие сложность предлагаю включить:
-функциональность
Ну и какая у исходников функциональность? Какие функции выполняют исходники? А вот если под программой понимать, "последовательность машинных команд"...
zss_vrn
Сообщение от :
Что такое сложность? По моему - прежде всего размер проекта в смысле его внутреннего устройства (т.е. исходников) и еще наличие большого количества связей между элементами проекта. Размер - не в количестве байт текста, а в количестве операторов, так как имена, например, в С++ длиннее.
Допустим у нас есть два байта в памяти. Необходимо их обменять.
Что делает программист на асме?
Пишет комманду xchg и в качестве операндов указывает два адреса. Размер такой программы одна строка(один оператор). Связей 0(два байта между собой никак не связаны).
Что делает программист на с++? Резервирует память под временное хранилище, копирует туда первый байт, на место первого пишет второй и, наконец, на место второго копирует байт из временного хранилища. Размер программы - три строки(три оператора). Связей по прежнему 0.
Вывод: программа обмена двух байт на с++ сложнее.
А на самом деле?
Я считаю, что сложность одинакова, ибо обе программы выполняют одинаковые функции. То есть по поводу определения сложности мне легче согласиться с Alex__G.
Сложность определяется функциональностью, стоимостью поддержки/развития. Можно ещё добавить сложность распростронения(раскрутки)...
Сообщение от :
При прочих равных условиях программа на асме будет СЛОЖНЕЕ программы на С++. Хотя бы потому, что ООП на асме - дело довольно экзотическое
Говоря про ООП ты искусственно ограничиваешь класс программ. Не все программы состоят из объектов.
Сообщение от :
Кстати, программа для меня - все же исходный текст, а не исполняемый модуль.
Сообщение от :
"программа - последовательность действий конечного автомата"; "программа - это набор определенных действий, приводящий к определенному необходимому результату".
Программирование - это инженерная специальность (то есть практическая), а наукообразные определения предлагаю оставить для чистой науки в худшем смысле этого слова.
В конечном счете программа это набор инструкций, просто инструкии могут быть низкоуровневые (ассемблер), а могут быть высокоуровневые (си, паскаль, ява).
Внося предложение добавить понятие функциональность я имел в виду то, что исходник имеет некоторый потенциал - то есть инструкции, которые в нем содержатся говорят компьютеру как сделать определенные нужные конечному пользователю вещи. Что касается распростронения(раскрутки), то это относится скорее к программному продукту, чем просто к программе.
[Ответ]
LSL 02:09 28.04.2004
Alex__G
Программирование - это инженерная специальность (то есть практическая), а наукообразные определения предлагаю оставить для чистой науки в худшем смысле этого слова.
Инжинер такого слова, как "определение" вообще знать не должен. Его задача делать а не думать.. думают пусть учёные
В конечном счете программа это набор инструкций, просто инструкии могут быть низкоуровневые (ассемблер), а могут быть высокоуровневые (си, паскаль, ява).
А перфорации - это инструкции ? Высокоуровневые или низкоуровневые ?
[Ответ]
zss_vrn 07:10 28.04.2004
Rabbit
Сообщение от :
Я считаю, что сложность одинакова, ибо обе программы выполняют одинаковые функции
Это понятно, почему такая неразбериха с понятиями. У кого что болит, тот о том и говорит. Конечно, любое определение имеет право на жизнь. Все теории стоят одна другой
Обмен двух байтов в памяти - ну, я всеж не назвал бы это программой. Конечно, на асме это сделать проще.
Сообщение от :
Резервирует память под временное хранилище, копирует туда первый байт, на место первого пишет второй и, наконец, на место второго копирует байт из временного хранилища.
x = ((x & 0x00FF)<<8) + ((x & 0xFF00)>>8);
Че там резервировать... Не проверал, но, скорее всего, будет работать. Если X - 16 битный int. Сколько здесь операторов? Я 7 насчитал. Но есть еще библиотечные функции, которые это одним оператором делают - не стал искать.
Асм - язык операторный, С - структурный, С++ - ОО. Для разных целей они.
Сообщение от :
А вот если под программой понимать, "последовательность машинных команд"
Тогда лучше писать на асме.
Сообщение от :
Говоря про ООП ты искусственно ограничиваешь класс программ. Не все программы состоят из объектов.
Разумеется, не все. Поэтому и существует куча языков программирования разных классов. И говоря о пригодности языка, можно говорить только о его пригодности к решению задач определенного класса. И сложности это тоже касается. Стоимость сопровождения - правильный критерий. Если мы договоримся, что такое сопровождение Поддержка системы, которая эксплуатируется у 10 пользователей и у 10 000 пользователей - это совсем разные вещи.
Кстати, программа в сопровождении не нуждается вообще - в сопровождении нуждается программный продукт.
Сообщение от :
А почему?
Потому что мне так проще понимать этот мир и управлять его частью. Во сказал, сам не до конца понял То есть, я еще как то могу повлиять на поведение программы, если у меня есть исходный текст. И мои возможности равны почти 0, если есть только исполняемые модули. Зачем же я буду иметь дело с тем, чем не смогу управлять? Мне проще думать, что программа - это набор исходников. И сопровождать -то приходится именно исходники. И тратим мы 99% времени на возню с исходниками и другой документацией - схемами, графиками и т.д. А приложение - ну, закатали на болванку, в коробку упаковали - и привет. С глаз долой - из сердца вон LSL
Сообщение от :
Его задача делать а не думать..
Не согласен. Инженер - это ОЧЕНЬ много. Главная его задача - как раз думать. Конечно, я говорю о хорошем инженере.
Сообщение от :
А перфорации - это инструкции
Это код. Исполняемый код, самый обычный. Одна строка перфоленты - один байт. В начале перфоленты идет программа-загрузчик, которая весь остальной код размещает в памяти определенным образом. Alex__G
Сообщение от :
низкоуровневые (ассемблер), а могут быть высокоуровневые (си, паскаль, ява).
оператор - для асм
процедура - для паскаля
сообщение объекту - для явы.
[Ответ]
zic 15:19 28.04.2004
сообщение объекту - для явы
А в смалталке это уже как то по другому называется ?
А например что такое + ,=+ ? это операторы даже в спер обьекториентированных языках [Ответ]
Сообщение от :
А в смалталке это уже как то по другому называется
Почему? Так же.
Я имел в вииду то, что асм, бейсик, фортран - языки операторные, С, паскаль, алгол - процедурные, С++, ява, C# - объектные. Но это - НАПРИМЕР, я не перечислял все языки, я их просто не знаю.
В объектных языках есть оператроы и процедуры, но сама парадигма ООП - "обмен сообщениями между объектами". Парадигма процедурных языков - "выполнение процедур", операторных - "выполнение операторов". Чего не так?
[Ответ]
Rabbit 18:08 29.04.2004
Alex__G
Сообщение от :
В конечном счете программа это набор инструкций, просто инструкии могут быть низкоуровневые (ассемблер), а могут быть высокоуровневые (си, паскаль, ява).
На этом можно и и остановиться, но чем тогда программа отличается от исходников. Ведь когда говорят "программа" и "исходники" имеют в виду разные вещи. Например, "исходный код программы".
Сообщение от :
Что касается распростронения(раскрутки), то это относится скорее к программному продукту, чем просто к программе.
Пожалуй да. Я был не прав.
LSL
Сообщение от :
Инжинер такого слова, как "определение" вообще знать не должен. Его задача делать а не думать.. думают пусть учёные
Теперь мы знаем как ты пишешь программы...
zss_vrn
Сообщение от :
Обмен двух байтов в памяти - ну, я всеж не назвал бы это программой. Конечно, на асме это сделать проще
=:E Ты недавно говорил, цитирую, "программа для меня - все же исходный текст". Конец цитаты. Я щаз напишу два исходника для обмена двух байт и по-твоему это будет программой... Вернее было бы... Сейчас, вероятно, твоё мнение изменилось.
Сообщение от :
x = ((x & 0x00FF)<<8) + ((x & 0xFF00)>>8);
Че там резервировать... Не проверал, но, скорее всего, будет работать
Во-первых работать не будет(во втором слагаемом сдвиг лишний), а во-вторых это программа для обмена двух СОСЕДНИХ байт.
Сообщение от :
quote:
--------------------------------------------------------------------------------
А вот если под программой понимать, "последовательность машинных команд"
--------------------------------------------------------------------------------
Тогда лучше писать на асме
А вот и нет. Можно писать на чем угодно, а потом с помощью компилятора получить машинные команды. Сейчас так и делают.
Сообщение от :
То есть, я еще как то могу повлиять на поведение программы, если у меня есть исходный текст.
Сообщение от :
Мне проще думать, что программа - это набор исходников.
Мне кажется, что эти два утверждения противоречат друг другу. Надо либо "исходники"="программа", либо "исходники" отдельно, "программа" отдельно.
[Ответ]
LSL 00:37 30.04.2004
Rabbit
Теперь мы знаем как ты пишешь программы...
Я думаю ты понял что это был сарказм
Хотя бывает и такое. Напишешь бред, а он работает ! И работает правильно ! И не поймёшь, как он может так работать ! Но такое бывает редко, потому-что пишу для себя а не для других [Ответ]
zss_vrn 07:05 30.04.2004
Rabbit
Сообщение от :
=:E Ты недавно говорил, цитирую, "программа для меня - все же исходный текст". Конец цитаты. Я щаз напишу два исходника для обмена двух байт и по-твоему это будет программой...
Не, не будет Мнений - то может быть сколько угодно, и они могут быть правильными. Но я имел в виду - не несколько строчек текста, а всеж нечто большее. Ну, не программа для меня то, что меняет два байта. Хотя назначение такого шедевра можно представить - например, некий кряк, меняющий два байта в исполняемом модуле. Выходит - тоже программа
А если в общем брать - без всякого практического смысла - то исполняемый модль и исходный текст - два представления одной сути.
Вот, гусеница и бабочка - это одно и то же? ))
Сообщение от :
Во-первых работать не будет(во втором слагаемом сдвиг лишний), а во-вторых это программа для обмена двух СОСЕДНИХ байт.
Блин, всеж пришлось проверить - работает и сдвиг не лишний, без него не работает.
x = ((x & 0x00FF)<<8) + ((x & 0xFF00)>>8);
во втором случае после маскировки остается старший байт и его надо задвинуть на место младшего.
А вот сами маскировки можно и убрать:
x = (x <<8) + (x >>8);
Но я не уверен, что без маскировки будет работать при любых свойствах оптимизатора/компилятора.
Соседних, конечно. А как надо было?
Сообщение от :
А вот и нет. Можно писать на чем угодно, а потом с помощью компилятора получить машинные команды. Сейчас так и делают
Не логично. Если результатом должна быть последовательность команд, значит, и надо писать эти команды. Зачем всякие разные компиляторы и т.д.? Открываем бинарным редактором пустой файл и начинаем : 4D 5A ...
Сообщение от :
Мне кажется, что эти два утверждения противоречат друг другу.
еще раз. все решается конкретно.
пример номер раз:
имеем скажем конвейр и наш комп управляет автоматом,
который скажем выполняет ряд технологических операций.
1) ассемблер
прога сложная при написании, но делается 1 раз.
Надежность супер ибо в принципе прога простая по выполняемым действиям,
можно отказаться от от всех устройств типа винчестеров итд
и прошить прогу скажем рядом с биосом.
2) Си. красиво, наглядно, но за собой потянулись библиотеки,
библиотеки потянули OS. Итого стоит обычный комп с винтом, OS и тд.
пример второй:
любимая бюсгалтерия
1) ассемблер - с трудом пишем прогу но просто зашиваемся
в во всяких дополнениях и изменениях (как вы там обзываетесь? maintainability? ну да тянет на ноль с плюсом :-) )
2) си куча библиотек, быстрое изменение визуальных компонент итд.
Резюме: помойму ясно? в примере номер 1 ассемблер сам просится. можно ставить даже однокристалку. А вот пример
номер 2 на ассемблере писать даже ярый садомазохист не будет :-)
P.S. хотя как странно началось обсуждение ? :-)
начали с мозго... и закончили мерянием пиписек у сей и ассемблера :-)
[Ответ]
Alex__G 11:22 30.04.2004
Конечно все зависит от задачи. Давайте будем говорить на примере задач близких к примеру 2. Все мною вышесказанное относиться именно к таким задачам.
[Ответ]
Rabbit 15:49 30.04.2004
zss_vrn
Сообщение от :
Вот, гусеница и бабочка - это одно и то же? ))
Конечно нет. А вот у тебя да. Заметь, я не спорю, что из одного получаеться другое, но это всё же разные вещи...
Сообщение от :
Блин, всеж пришлось проверить - работает и сдвиг не лишний, без него не работает.
Да, действительно. Я потом тоже проверил - работает...
Сообщение от :
Соседних, конечно. А как надо было?
Ну... В условии ничего не было сказано о расположении этих байт.
Сообщение от :
Не логично. Если результатом должна быть последовательность команд, значит, и надо писать эти команды. Зачем всякие разные компиляторы и т.д.?
Чтобы описывать большие последовательности команд на языке хотя бы немного похожем на естесвенный.
Лучше всего(в идеале) было бы произнести описание программы на русском. В таком случае "исходником" была бы произнесённая фраза(описание). И программа получалась бы из этих исходников с помощью суперпродвинутого компилятора.
Устроить что ли голосование, по поводу определения слова "программа", а то мы так и не выясним кто прав...
Const
Сообщение от :
начали с мозго... и закончили мерянием пиписек у сей и ассемблера :-)
Ещё не закончили...
Кстати, твои примеры ещё раз показали, что сложность программ одинакова вне зависимости от языка, а вот сложность создания таких программ, зависит от задачи.
[Ответ]
LSL 02:21 07.05.2004
Соблюдайте правила, тема дискуссии "Надёжность и трудоёмкость программ"
[Ответ]
zss_vrn 07:27 07.05.2004
Rabbit
Сообщение от :
Конечно нет. А вот у тебя да.
И оба правы - открой энциклопедию
Сообщение от :
Да, действительно. Я потом тоже проверил - работает...
Без теста никогда не скажешь, работает или нет
Сообщение от :
Ну... В условии ничего не было сказано о расположении этих байт.
Выходит, на усмотрение исполнителя...
Сообщение от :
Лучше всего(в идеале) было бы произнести описание программы на русском.
Не совсем согласен. Даже на русском очень трудно договориться с заказчиком, чего же он хочет. Вот, UML придумали - там с помощью картинок проще должно быть. Может, поможет...
И потом, КАКИХ команд? Если машинных, то на машинном языке и надо писать.
[Ответ]