|
Pascal для AVR |
|
|
|
 |
Ответов
(180 - 194)
|
Nov 29 2008, 12:08
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(Огурцов @ Nov 28 2008, 21:33)  А если не видно разницы...(с) то нафиг этот билдер. Если не видно разницы - то нафиг делфу. Бо билдер - это С++, который мэйнстрим и есть почти подо все, что шевелится. Цитата(Огурцов @ Nov 28 2008, 21:33)  И вообще, нафиг этот билдер - глюкало еще то. Ага, особенно, если учесть, что в основе обоих одна и та же оболочка и VCL. Одинаковое глюкало. Цитата(Огурцов @ Nov 28 2008, 21:33)  либо VS. Не надоело еще сравнивать несравнимые вещи? Когда VS научится лепить графические апликухи тем же способом, что и билдер, тогда и сравним. Уж Qt в противовес билдеру приводили бы, что-ли. Это была бы тема. Цитата(Огурцов @ Nov 28 2008, 21:33)  Наврено сам придумал. Но копирайт поставить не могу - вдруг прочитал где. Вот это похоже на правду. Цитата(Огурцов @ Nov 28 2008, 21:33)  Ок, а иначе кто наследник ? Зачем ему наследник? Он сам живее всех живых?.. Кто у делфы наследник? Аналогия понятна? Цитата(Огурцов @ Nov 28 2008, 21:33)  Ну не сравнивайте шарп и оригинальную (не java#) жабу по быстродействию. Шарповский X-код ложится прямо на команды таргета, а джава (не java#)- все-таки интерпретатор. Так что если вы по эффективности одного делаете предположение о другом, то ошибаетесь. Шарп по эффективности ничуть не хуже, чем це++, а по остальным критериям, включая легкость разработки, так и гораздо лучше. Ой, не надо этих песен/басен! Разберитесь сначала в вопросе как следует, потом подискутируем. Хинт: разработавшие и применяющие жабу с шарпом поди не глупее нас с вами, если бы все было бы так, как вы пишете, уже давно на AVR бы на шарпе код лепили. Только хде ж он? Цитата(tyro @ Nov 28 2008, 21:59)  Не прошло и тридцати лет.  Еще осталось дождаться, пока в них глюки вычистят, научатся широко применять и появятся приемы типа описанных в "Modern C++ Design", а также делфовая STL.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Nov 29 2008, 15:03
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(dxp @ Nov 29 2008, 12:08)  Ага, особенно, если учесть, что в основе обоих одна и та же оболочка и VCL. Одинаковое глюкало. Нет. Был опыт, причем не только мой, но целой команды. После замены билдера на дельфи число необъяснимых глюков снизилось на порядки. Цитата(dxp @ Nov 29 2008, 12:08)  Не надоело еще сравнивать несравнимые вещи? Когда VS научится лепить графические апликухи Вы, вообще, VS когда-нибудь запускали ? Цитата(dxp @ Nov 29 2008, 12:08)  Зачем ему наследник? Он сам живее всех живых?.. Кто у делфы наследник? Аналогия понятна? Нет. Если он такой живой, зачем нужно было шарп создавать ? Ну писали бы все на си. Так ведь нет, народу почему-то паскаль подавай, дельфи, шарп и иже с ним. А был бы си такой хороший и кто бы дергался на что-то иное ? Цитата(dxp @ Nov 29 2008, 12:08)  Ой, не надо этих песен/басен! Разберитесь сначала в вопросе как следует, потом подискутируем. Ок, не буду спорить. Возможно и жаба компилиться в таргет, а не интерпретируется как Х-код. Просто я вижу жутко тормозные жабовые приложения и шарп, который летает в полный рост. А по поводу оптимизации, это на аргумент предыдущего оратора, так оно зависит не от языка вообще, а от конкретной реализации компилятора. Абсолютно одинаково с це. Цитата(dxp @ Nov 29 2008, 12:08)  Хинт: разработавшие и применяющие жабу с шарпом поди не глупее нас с вами, если бы все было бы так, как вы пишете, уже давно на AVR бы на шарпе код лепили. Скоро уже, подождите чуток ) А для ARM, MIPS уже можно ; Но что-то я уже повторяюсь.
|
|
|
|
|
Nov 29 2008, 15:52
|
Профессионал
    
Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347

|
Цитата Забудьте об этом тупом неповоротливом языке "поворотливость" программы зависитъ только от компилятора. язык тут ни при чем. но так сложилось что подавляющее большинство компиляторов для контроллеров - С/С++. у любой конструкции С есть эквивалент в паскале, любую программу можно с минимальными изменениями перенести туда и обратно. так что не надо гнать на язык.
Сообщение отредактировал ukpyr - Nov 29 2008, 15:54
|
|
|
|
|
Nov 30 2008, 08:01
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(Огурцов @ Nov 29 2008, 18:03)  Нет. Был опыт, причем не только мой, но целой команды. После замены билдера на дельфи число необъяснимых глюков снизилось на порядки. Пишу на Builder'е начиная с 1й версии, необъяснимых глюков не встречал (объяснимые - встречал), может что то в 'команде' не так? Во избежании обвинения в пристрастии к BCB, сразу говорю, что писал (и пишу) еще на VC, gcc, icc (x86 & Itanium), HiTech C.
|
|
|
|
|
Nov 30 2008, 08:17
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Цитата(dxp @ Nov 28 2008, 07:04)  Во как! А for(;;){} чем не угодило? Тем, что как любой фиксированный синтаксически/семантически шаблон используется в определённых ему рамках и пишется не задумываясь о его необходимости и возможной негибкости при использовании.  ( т.е. "зашоренное" мышление ) А если требуется некое другое использование ( например доступ к счётчику цикла вне данного цикла), то это может превратится в маленький ньюанс в понимании. P.S. Но это не только в Си проявляется.
|
|
|
|
|
Dec 8 2008, 13:35
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(ukpyr @ Nov 29 2008, 18:52)  "поворотливость" программы зависитъ только от компилятора. язык тут ни при чем. Неповоротливость, как и гибкость, зависят только от языка, но никак не от компилятора. Почему, например, для перевда буквы в нижний регистр нельзя просто установить бить 0x40, как в Си (c |= 0x40), а надо сначала получить код символа, выполнить с ним арифметическую операцию, а потом преобразовать опять в символ? Цитата(ukpyr @ Nov 29 2008, 18:52)  у любой конструкции С есть эквивалент в паскале, любую программу можно с минимальными изменениями перенести туда и обратно. так что не надо гнать на язык. Вот например, недавно узнал, что оказывается внутри скобок begin-end нельзя объявлять локальные переменные. То есть, любая временная переменная, которая нужна на протяжении 3-4 строк, должна объявляться в начале функции и жить на всем ее протяжении. Да у меня в каждом цикле объявляются переменные а в конце цикла уничтожаются! А в паскале я должен позаботиться о них в начале функции, придумать им разные имена и т.д.? А вообще, такие заявления (об эквивалентности Си и паскаля) могут делать только те, кто начинал с паскаля. Я начинал и Си, и когда пытался познакомиться с паскалем, меня просто бесило, что вещи, элементарные и очевидные в Си, обрастают в паскале кучей ограничений. Если вы начинали с паскаля, то эти ограничения вам объяснили сразу, поэтому переходя на Си вы даже не думаете о том, что что-то можно сделать проще и легче, потому что программируя на Си, вы продолжаете думать по-паскалевски, вы просто не знаете о том, что мир шире, что можно выйти из его дурацких ограничений, так же, как дальтоники не догадываются о том, что мир на самом деле ярче, чем они его видят.
Сообщение отредактировал 777777 - Dec 8 2008, 13:48
|
|
|
|
|
Dec 8 2008, 15:49
|

Местный
  
Группа: Свой
Сообщений: 222
Регистрация: 9-06-07
Пользователь №: 28 317

|
Цитата(777777 @ Dec 8 2008, 16:35)  Вот например, недавно узнал, что оказывается внутри скобок begin-end нельзя объявлять локальные переменные. То есть, любая временная переменная, которая нужна на протяжении 3-4 строк, должна объявляться в начале функции и жить на всем ее протяжении. Да у меня в каждом цикле объявляются переменные а в конце цикла уничтожаются! А в паскале я должен позаботиться о них в начале функции, придумать им разные имена и т.д.? Тут Вы неправы, хотябы потому, что С89 тоже требует объявлять переменные в начале функции и это мало кого смущало.
|
|
|
|
|
Dec 8 2008, 16:01
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Aesthete Animus @ Dec 8 2008, 18:49)  Тут Вы неправы, хотябы потому, что С89 89??? 1989 год. Сколько лет прошло, по этой причине не помню, но то, что еще в 80-х годах на единственном более-менее доступном тогда борлондячем компиляторе можно было ограничивать область видимости и соответственно объявлять переменные внутри функции, это точно. Цитата ...и это мало кого смущало. Меня смущало-бы и даже очень.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Dec 8 2008, 20:15
|
Профессионал
    
Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347

|
Цитата Вот например, недавно узнал, что оказывается внутри скобок begin-end нельзя объявлять локальные переменные. То есть, любая временная переменная, которая нужна на протяжении 3-4 строк, должна объявляться в начале функции и жить на всем ее протяжении. Да у меня в каждом цикле объявляются переменные а в конце цикла уничтожаются! А в паскале я должен позаботиться о них в начале функции, придумать им разные имена и т.д.? эти переменные не создаются/уничтожаются, а просто повторно используются одни и те же регистры. в паскале можно объявить одну переменную и повторно использовать в разных местах. Цитата очему, например, для перевда буквы в нижний регистр нельзя просто установить бить 0x40, как в Си (c |= 0x40) а кто запрещает компилятору скомпилировать выражение c = c or $40 как установку бита ? вроде не проблема ? вон в avr-gcc сначала устанавливать/обнулять биты приходилось через костыли cbi/sbi, потом научились делать через |=, &=~ . так что реализация таких мелочей зависит только от компиляторописателей, проблема паскаля в том, что он распространен значительно меньше чем С, соответственно намного меньше качественных компиляторов.
Сообщение отредактировал ukpyr - Dec 8 2008, 20:27
|
|
|
|
|
Dec 9 2008, 06:36
|
Местный
  
Группа: Участник
Сообщений: 256
Регистрация: 6-03-05
Из: Екатеринбург
Пользователь №: 3 112

|
В стандарте Ц89 переменную можно объявлять в любом месте в начале блока, а не только в начале функции, в том числе анонимного блока, не связанного ни с каким оператором ветвления. Напр.: void func (int c, char  { int a; a = b + c; { float f; f = a + c; } } По стандарту Ц99 переменную можно объявлять в любом месте, где допустима инструкция (как в Ц++).
|
|
|
|
|
Dec 9 2008, 14:10
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(forever failure @ Dec 9 2008, 09:36)  В стандарте Ц89 переменную можно объявлять в любом месте в начале блока, а не только в начале функции, в том числе анонимного блока, не связанного ни с каким оператором ветвления. Напр.: Код void func (int c, char B) { int a; a = b + c; { float f; f = a + c; } } Сишники обычно пишут так: Код void func (int c, char B) { int a = b + c; { float f = a + c; ... } } Ведь если вы объявляете новую переменную, то для того, чтобы с ней работать, а работа начинается с ее инициализации (за исключением редких случаев). Это, опять же, к вопросу о гибкости языка.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|