[an error occurred while processing this directive]
Или ещё пример. Как компилятор определяет границу между блоком описаний и собственно началом блока команд ? Определяет. Но сколько геморроя
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Отправлено
Доктор ТуамОсес
20 января 2006 г. 16:53
В ответ на:
При разработке компилятора СИ гораздо больше ебли, чем при разработке компилятора ПАСКАЛЯ из-за бОльшей "контестозависимости" его грамматики. Из-за этого компилятор ПАСКАЛЯ в принципе гораздо более "быстродействующий" и простой, так как надо делать меньше операций поиска и сравнения (перебора). Например, что мешало сделать в СИ конструкцию: main ():void . Нет сделали void main (). Казалось бы, какая на х.. разница . Для "писателей" на языке почти никакой. А вот для
отправлено Доктор ТуамОсес 20 января 2006 г. 15:51
Составить ответ
|||
Конференция
|||
Архив
Ответы
И вообще - цели были разные когда языки придумывали. Паскаль был изобретен для удобства обучения - следствие простой компилер, а С - для удобства писания программ - следствие сложный компилер. За удобство надо платить.
—
SM
(20.01.2006 17:31
81.94.147.99
,
пустое
)
Паскаль был изобретен, несомненно, умными людьми, а С - программистами в худшем смысле этого слова...
—
basilmak
(21.01.2006 09:03
83.237.128.74
,
пустое
)
Паскаль был изобретен теоретиком, а С - упертыми практиками. Думаю Паскаль обречен.
—
blackbit
(23.01.2006 09:54
217.23.75.36
, 413 байт)
Уточню: для удобства системного программирования , а не программиста !
—
Доктор ТуамОсес
(20.01.2006 18:08
62.118.146.246
,
пустое
)
Да нет, как раз программиста. Свобода выбора реализации одного и того-же. Кто хочет так, кто хочет эдак - для большинства найдется удобный ему вариант. А паскаль - Гестапо. "Делать так и никак иначе."
—
SM
(20.01.2006 18:14
81.94.147.99
,
пустое
)
Ортогональность и однозначность повышают надёжность языка. Паскаль разрабатывал Вирт, для которого во главу угла всегда ставилась надёжность программы.
—
Доктор ТуамОсес
(20.01.2006 18:22
62.118.144.244
,
пустое
)
Надежность программы - это исключительно задача программиста. На любом языке можно написать одинаково надежную программу.
—
SM
(20.01.2006 18:24
81.94.147.99
,
пустое
)
Ошибаетесь, не только. Например, язык ADA. Для Вас (или меня) на нем писать может быть и адом, но в air-space-индустрии это требования и практика.
—
Щ.C.
(20.01.2006 18:41
144.206.186.102
,
пустое
)
Скорее это требование не из-за надежности, обусловленной конструкциями языка, а из-за надежности, обусловленной конкретной реализацией компилятора и его библиотек. А также проверенности на отсутствие там "закладок".
—
SM
(20.01.2006 18:47
81.94.147.99
,
пустое
)
Не так, там, например, жесткая система сопровождения параметров при передаче в функцию/процедуру (+)
—
Щ.C.
(20.01.2006 18:57
144.206.186.102
, 223 байт)
Это конечно. Но хорошо когда ещё язык помогает программисту в решении этой задачи , а не мешает сложностью, запутанностью и неоднозначностью
—
Доктор ТуамОсес
(20.01.2006 18:25
62.118.144.244
,
пустое
)
Ну мне например мешает в решении этой задачи на паскале то, что (+)
—
SM
(20.01.2006 18:30
81.94.147.99
, 321 байт)
Зато когда прижмёт - залезаешь в писаное на Паскале 10 лет назад - врубаешься за 15 минут - правишь и всё ОК. Всё четко, строго и понятно. Придя к программеру на С час наблюдаешь как он пыхтит и потеет, пытаясь понять что он сам написал на С год назад... Видел это не раз и не два.
—
basilmak
(21.01.2006 11:20
83.237.129.3
,
пустое
)
Субъективно.... Из за малого опыта работы на Паскале.
—
Доктор ТуамОсес
(20.01.2006 18:34
62.118.144.244
,
пустое
)
Да не такой уж и малый. Года 4 наверное. Это был второй изученный язык после пары ассемблеров. И писал я на нем не мало, помницца даже использовал turbo-vision борландовский. Потом С изучал с таким же скрипом (ибо под OS/2 не было паскаля). Потом... На паскаль ни в жисть не вернусь.
—
SM
(20.01.2006 18:39
81.94.147.99
,
пустое
)
А за begin и end вообще растреливать надо!
—
Мученник Паскаля
(20.01.2006 18:20
85.186.145.38
,
пустое
)
Зря ты так. А я ненавижу бесконечные "{" и " }". Кому что.
—
Доктор ТуамОсес
(20.01.2006 18:24
62.118.144.244
,
пустое
)
Ну у скобок есть одно неоспоримое, причем объективное, преимущество - для того, чтобы объявить блок ими, надо два раза на кнопки нажать. Чтобы бегинами - 8 раз. Итого в 4 раза дольше.
—
SM
(20.01.2006 18:26
81.94.147.99
,
пустое
)
Я читал про язык {забыл его название}. Дык там все операторы кодировались одной буквой. Какая экономия нажатий клавиш. Будете использовать такой язык ?
—
Доктор ТуамОсес
(20.01.2006 18:28
62.118.144.244
,
пустое
)
Если он такой же (или более) гибкий, чем С, то вполне возможно.
—
SM
(20.01.2006 18:31
81.94.147.99
,
пустое
)
А как же читабельность программы. Как вы через месяц разберётесь в своей же проге ?
—
Доктор ТуамОсес
(20.01.2006 18:33
62.118.144.244
,
пустое
)
У меня обычно есть мат-модели. Потом еще бывают комментарии. Да в общем как-то не особо страдаю тем, что не понимаю своих программ. В общем в моем списке требований к коду его читабельность на одном из последних мест.
—
SM
(20.01.2006 18:36
81.94.147.99
,
пустое
)
Про МАТ-модели поподробней, плизз ))))))))))
—
Крок
(20.01.2006 19:54
213.145.38.221
,
пустое
)
А зря. Одним из принципов повышения надёжности программы прописан в книжках повышение её читабельности. Ведь Вы не Господь Бог. А если программа читабельна то вероятность ошибки резко уменьшается.
—
Доктор ТуамОсес
(20.01.2006 18:52
62.118.142.212
,
пустое
)
На мой взгляд странная зависимость. Так как задумываясь о повышении читабельности (когда такое требование есть) я обычно и леплю всякие алгоритмические глюки. Так как мозги настраиваются на всякие излишества, кроме реализации собственно алгоритма. Опять же сугубо субъективно, только свой опыт.
—
SM
(20.01.2006 18:55
81.94.147.99
,
пустое
)
Точно! И заодно верилого-изобретателей туда же. А то все по-сишному, а эту срань из паскала достали.
—
SM
(20.01.2006 18:23
81.94.147.99
,
пустое
)
Так и есть! И c Verilog на SystemC пререлез бы еслиб 1)мозгов былоб по более 2)лог-синтезатор,фитер был бы...
—
Мученник верилога
(20.01.2006 18:31
85.186.145.38
,
пустое
)
Ага, только из SC выкинуть нафиг объявление самого класса и гестаповско-vhdl-ную типизацию :) А синтезаторы есть, это не проблема.
—
SM
(20.01.2006 18:32
81.94.147.99
,
пустое
)
Как ни странно но тощнит от VHDL из-за сходства с PASCAL , хотя при выборе BASIC or PASCAL то паскаль предпочтительней...
—
Однако холодно в дурке зимой
(20.01.2006 18:47
85.186.145.38
,
пустое
)
Сначала был PL/M, потом PASCAL, потом С, и далее С++, C# (+)
—
Щ.C.
(20.01.2006 17:51
144.206.186.102
, 148 байт)
Нет, сначала был Алгол-60 и Вирт принимал участие в его разработке.
—
_Bill
(20.01.2006 20:33
195.239.108.229
, 407 байт)
Всё правильно говорите (+)
—
Щ.C.
(21.01.2006 12:48
144.206.186.102
, 286 байт)
Не праильно Паскаль и СИ разрабатывались и ДОРАБАТЫВАЛИСЬ примерно в одно время.
—
Доктор ТуамОсес
(20.01.2006 18:08
62.118.146.246
,
пустое
)
Нифига, сначала был PASCAL, потом С!
—
Щ.C.
(20.01.2006 18:44
144.206.186.102
,
пустое
)
Если быть точнее, то они существовали параллельно и разрабатывались примерно в одно время.
—
_Bill
(20.01.2006 20:40
195.239.108.229
, 285 байт)
LISP - конечно не туда (идея там другая).
—
Щ.C.
(20.01.2006 17:55
144.206.186.102
,
пустое
)
LISP (eLISP) еще как применяется. Например очень распространенный программистский текстовый редактор [x]emacs.
—
SM
(20.01.2006 18:01
81.94.147.99
,
пустое
)
Поскольку любой проц. не знает ничего, кроме набора своих собственных инструкций (команд), всё остальное становится делом человеческой эстетики (+)
—
Щ.C.
(20.01.2006 18:26
144.206.186.102
, 317 байт)
Нет такой границы. Объявить переменную можно в любом месте. Так что не болтай попусту языком.
—
Михаил Е.
(20.01.2006 17:25
81.13.30.10
, 27 байт)
Да, но только в начале блока. Тело функции тоже представляет собой блок или compound statement :))
—
_Bill
(20.01.2006 17:29
193.233.83.90
,
пустое
)
А это начало блока?
—
Михаил Е.
(20.01.2006 17:50
81.13.30.10
, 2057 байт)
В данном случае - да. Возможно я неточно выразился, но под блоком
—
_Bill
(20.01.2006 20:21
195.239.108.229
, 293 байт)
И не понятно, почему так... Было бы куда удобнее, если бы объявлять можно было бы вообще везде.
—
SM
(20.01.2006 17:32
81.94.147.99
,
пустое
)
В чём проблема - пишите на BASIC
—
Доктор ТуамОсес
(20.01.2006 18:08
62.118.146.246
,
пустое
)
Я вообще любитель ассемблера :) У меня там нет проблем, где, что и как объявлять.
—
SM
(20.01.2006 18:24
81.94.147.99
,
пустое
)
Да уж. Почти полная свобода.
—
Доктор ТуамОсес
(20.01.2006 18:29
62.118.144.244
,
пустое
)
Тогда бы началась большая путанница. А главное, что переменные
—
_Bill
(20.01.2006 17:37
193.233.83.90
, 231 байт)
Вот-вот. До ее использования. И только. Остальное - дело удобства и вкуса.
—
-=ВН=-
(20.01.2006 17:45
194.190.181.231
,
пустое
)
Лучше это делать там, где пришло время это сделать... Просто меньше листать текст при написании вверх-вниз, экономится время. А путаница - кому-то путаница, кому-то не путаница. Дело индивидуальное.
—
SM
(20.01.2006 17:39
81.94.147.99
,
пустое
)
По открывающейся фигурной скобке? Да. Супергеморрой.
—
SM
(20.01.2006 16:56
81.94.147.99
,
пустое
)
Привожу пример {кусок программы}. Банальный . Из книжки Подбельского. Где же там фигурная скобка ???
—
Доктор ТуамОсес
(20.01.2006 17:09
62.118.145.214
, 120 байт)
Тем более это С++; добавлю +
—
Kenat
(20.01.2006 17:22
62.205.170.49
, 455 байт)
Вроде оба. Только в первой переменная живет до скобки, позволяя что-то после цикла еще с ней поделать, во втором - до выхода из цикла.
—
SM
(20.01.2006 17:59
81.94.147.99
,
пустое
)
Естественно, как Вы сказали, для C++. Для C - однозначно только второй вариант
—
SM
(20.01.2006 18:46
81.94.147.99
,
пустое
)
Вроде бы вариант №1 , хотя я пока ещё не особо силён в C++
—
Доктор ТуамОсес
(20.01.2006 17:51
62.118.144.54
,
пустое
)
Вариант 2 С++ для VC и Borland 4 - BC6 , ИАР и CCS под рукой нет, проверю как вернусь домой. Да и приколы здесь от компиллерописателей, i резервируется на стеке. Я вот к чему +
—
Kenat
(20.01.2006 18:28
62.205.170.49
, 44 байт)
Переменные резервируются где компилеру угодно и как оптимизатор решит. Счетчики циклов вообще часто из регистра не вылезают.
—
SM
(20.01.2006 18:34
81.94.147.99
,
пустое
)
Локальные в стеке, глобальные в сегменте данных.
—
Михаил Е.
(20.01.2006 18:42
81.13.30.10
,
пустое
)
Это не догма. Могу прямо сейчас выложить асм-листинг процедуры, где все локальные переменные в регистры убрались. Глобальные - те естественно.
—
SM
(20.01.2006 18:49
81.94.147.99
,
пустое
)
Так объявление переменной это такая же команда, как и остальные. Описание заканчивается после объявления последнего аргумента.
—
SM
(20.01.2006 17:14
81.94.147.99
,
пустое
)
Отправка ответа
Имя (обязательно):
Пароль:
E-mail:
NoIX ключ
:
Запомнить
Тема (обязательно):
Сообщение:
Ссылка на URL:
Название ссылки:
URL изображения:
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
E-mail:
info@telesys.ru