|
|
  |
Pascal для AVR |
|
|
|
Nov 14 2008, 08:52
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Цитата(zltigo @ Nov 14 2008, 10:33)  Давно подозревал, что в системе образования в России большие проблемы, но думал, что все так дурно и в головах "ученых". А как с этим в системе образования Latvia P.S. Не поймите превратно. Образование, бывает, формируется в привязке к технологиям крупных продавцов рынка  с С, С++, Pascal - это всё продаваемые системы программирования MS, Borland и др.
|
|
|
|
|
Nov 14 2008, 09:03
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Цитата(forever failure @ Nov 14 2008, 11:23)  Господа пасквилянты, чем в попу тарахтеть, какой прекрасный ваш паскаль, Эка Вас как перекосило  . P.S. Что Pascal, что С - для меня они из одной обоймы. А профессионально можно использовать хоть тот, хоть другой А эволюцию выигрывают Java, C#, + скриптовые языки и специализированные языки. Цитата(_Pasha @ Nov 14 2008, 11:58)  Таак. Пора звать R.Stallman&Co. Пусть юноше набьют.  Ага, при том, что мне "священные войны" Pascal vs C нетрогают. У меня есть своя любимая песочница Forth. GCC почти не использую. P.S. Хотите высказаться по существу? Странно что еще не вспомнили Виртовсую Мodula и европейские традиции в программировании.
Сообщение отредактировал Kopa - Nov 14 2008, 09:09
|
|
|
|
|
Nov 14 2008, 09:57
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата Мне так удобнее, т.к. я знаю Паскаль лучше, чем BASIC/C#/Perl гм. А что такое Perl? не скриптовый клон паскаля часом, а?  Цитата Другой пример. Допустим, юзаем АРМ. Допустим, имеется код одной какой-нибудь функции, которая располагается (и, соответственно, выполняется) в оперативной памяти, а другая располагается и работает во флешь. ну и в чем проблема? ;> поступаем как Keil решил эту задачу в CA: procedure ramfunc(..); __ram; begin end; накрайняк процедурный тип в паскале есть, выделяем память в RAM - копируем туда код из флеш и выполняем. Цитата В случае Паскаля, у меня выбора вообще нет! Ему (Паскалю) все едино, для всех случаев жизни там один подход, который мне неподконтролен. Я юзаю чисто стриговые переменные, которые сами как-то там работают, сами как-то перераспределяют память. Если же я буду работать не со стрингами, а с буферами, то это будет не Паскалевский подход, а как раз си-шный. Тогда преимущество Паскалевских строк становится сомнительным и вопрос выбора языка отпадает. не совсем так. Объявление типов коротких стрингов никто не отменял. Код type smallstr = string[32]; // занимает 33 байта памяти str[0] - длина, str[1..32] - чары shortstr = string[8]; // занимает 9 байт памяти str[0] - длина, str[1..8] - чары
var s1 : string; s2 : smallstr; s3 : shortstr;
begin s1 := s2 + s3; // <- легальная конструкция.
if (s2 = s3) then // <-- легальная конструкция ... Цитата(zhevak @ Nov 14 2008, 02:37)  здесь должны рассматриваться вопросы Си и Паскаля применительно к МК. Применительно к МК я свою точку зрения уже высказал, в общем-то она совпадает с вашей.
|
|
|
|
|
Nov 14 2008, 12:23
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(Kopa @ Nov 14 2008, 15:13)  Возможно, кому то, сылка пригодится  Это точно, что  Там, похоже, все на нулевом цикле осталось. Усадку фундаменту дают, понимаш. Цитата(Kopa @ Nov 14 2008, 13:03)  P.S. Хотите высказаться по существу? Если это - мне, то я просто типошучу. А так, меня тоже Паскаль vs C не трогают.
|
|
|
|
|
Nov 14 2008, 12:48
|

Знающий
   
Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065

|
Цитата(gotty @ Nov 14 2008, 13:15)  Спасибо за ссылку. С одной строны, я поржал от души, а с другой строны неприятно осознавать, что в руководстве страны сидят такие жопоголовые кормчие. Я вижу здесь три грубейшие ошибки. Все остальное -- производное от них. Поэтому комментировать тут нечего. Ошибки: 1. Данный документ родили товарищи-адепты Паскаля, а не адепты Си/Си++. 2. В качестве консультанта был приглашен Н.Вирт, а не Ритчи или Страуструп. 3. На своем заседании они пили явно не ту водку. Как следствие, докумен получился однобокий и тенденциозный. Очень напоминает истерию Советского Союза на Американские угрозы. Короче -- в жопу этот трактат. ЗЫ, а что, правда было бы прикольно, еслиб Н.Вирт поносил бы свои языки (Паскаль, Модула, Оберон), а ратовал за Си. А вы что хотели услышать от этой братии? Цитата(defunct @ Nov 14 2008, 15:57)  поступаем как Keil решил эту задачу в CA:
procedure ramfunc(..);__ram; begin end; накрайняк процедурный тип в паскале есть, выделяем память в RAM - копируем туда код из флеш и выполняем. Нет, нет, Уважаемый! Вы меня непоняли. Я просил реальную конструкцию, а не гипотетическую. Уточняю -- если Вы привели этот код, то назовите в каком компиляторе какой версии это было написано. Подозреваю, что такого компилятора реально не существует. Разубедите.
--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
|
|
|
|
|
Nov 14 2008, 12:57
|
Знающий
   
Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045

|
Цитата(zhevak @ Nov 14 2008, 14:48)  Спасибо за ссылку. С одной строны, я поржал от души, ... Ради этого и приводил ссылку, а так же ради того что бы помочь (если надо) осознать, что подобного рода холливары исключительно забано наблюдать со стороны  Неужели так принципиально кому-то что-то доказать? Ну а студентам нужно предложить выбор, пусть сами решают на чём писать. (исключительно моё мнение, как человека не связанного с системой образования)
|
|
|
|
|
Nov 14 2008, 14:06
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(zhevak @ Nov 14 2008, 14:48)  Нет, нет, Уважаемый! Вы меня непоняли. Я просил реальную конструкцию, а не гипотетическую. ОК вот не гипотетический код: Код const MAX_CODE_SIZE = 128;
type int_func = function( a, b : integer): integer;
function sum( a, b : integer ): integer; begin result := a + b; end;
function mul( a, b : integer): integer; begin result := a * b; end;
function StackFrameLauncher( flash_func : int_func; a, b : integer ) : integer; var stack_frame : array[0..MAX_CODE_SIZE - 1] of char; begin if ( pointer( @flash_func ) = Nil ) then result := 0 else begin CopyMemory( pointer(@stack_frame), pointer( @flash_func), MAX_CODE_SIZE ); result := int_func( @stack_frame )( a, b ) end end;
begin WriteLn( IntToStr ( StackFrameLauncher( sum, 6, 8 ) ) ); WriteLn( IntToStr ( StackFrameLauncher( mul, 6, 8 ) ) ) end. Цитата Подозреваю, что такого компилятора реально не существует. Разубедите. __ram конструкция ни одним Паскаль-компилятором не поддерживается, но тем не менее если бы была на то необходимость (были бы комиляторы с Паскаля под ARM) ее бы несомненно реализовали.
|
|
|
|
|
Nov 14 2008, 15:07
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(zhevak @ Nov 14 2008, 17:01)  назовите компилятор и его версию. Приведенный пример скопилировал в Delphi7. Цитата Значит, такой потребности нет Верно - потребности в нем нет, тут я с Вами согласен. Писать на паскале, басике и т.п. под МК - кощунство.
|
|
|
|
|
Nov 14 2008, 16:15
|

Знающий
   
Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065

|
Цитата(defunct @ Nov 14 2008, 21:07)  Приведенный пример скопилировал в Delphi7. Вот то-то и оно, что код будет скомпилирован не для АРМов, как я просил. Меня не интересует Паскаль для компов. Меня интересует (1)Паскаль для МК и (2) какие ОС были написаны на Паскале. Цитата Верно - потребности в нем нет, тут я с Вами согласен. Писать на паскале, басике и т.п. под МК - кощунство. Абсолютно согласен!
--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
|
|
|
|
|
Nov 14 2008, 17:32
|

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

|
Цитата(zhevak @ Nov 13 2008, 23:32)  От себя могу назвать только одну ОС, которая изначально была написана на Паскале. Это -- всем известная Windows. Редкостный бред, десятилетиями годами кочующий из одного форума в другой. Цитата(zhevak @ Nov 13 2008, 23:32)  В память о неблагополучном прошлом весь мир получил в наследство паскалевские вызовы API Window. Паскалевские вызовы были введены из-за того, что по этому соглашению легче вызывать callback-функции, которыми изобилует система. Цитата(DMD @ Nov 14 2008, 00:52)  А язык Си... он вымер, уж простите. Да уж, смешнее не скажешь. Я долго хохотался. Цитата(Rst7 @ Nov 14 2008, 09:48)  Ооо, скажите, а вот я принципиально стараюсь писать циклы как do{...}while(--var); и постоянно пользую goto. Вы не поскажете, у меня может тоже психические отклонения какие?  Пожалуй да. Потому что цикл do используется только когда он должен выполниться хотя бы один раз. Как вам удается его применять везде - для меня загадка. Что же касается постоянного использования goto - то будь я на месте вашего работодателя, я вас немедленно бы уволил. Потому что от программы недостаточно чтобы она работала, нужно чтобы ее мог легко понять другой программист. Цитата(gotty @ Nov 14 2008, 10:15)  Теперь понятно почему мы до сих пор в такой жопе...  Цитата(ARV @ Nov 13 2008, 21:42)  2. о цикле for - кто мешает использовать while или until? там можно тоже использовать различные условия завершения, продолжения и шага итерации цикла. Все эти операторы предназначены для разных целей. Любой цикл, вообще говоря, состоих из трех частей: инициализация, тело цикла и оператор, переводящий цикл в следующую итерацию. Если по какой-то причине инициализация уже проведена, то можно использовать while. В некоторых случаях требуется, чтобы тело цикла было выполнено хотя бы один раз. В этом случае требуется do. Таким образом, for является наиболее универсальным и общим оператором. Но именно в нем введены эти идиотские ограничения. Цитата(Огурцов @ Nov 13 2008, 13:05)  Такие фразы наводят на мысль, что вы и Це толком не знаете. Студент ? Или школьник ? Я берусь утверждать, что знаю Си в совершенстве. А каков был ваш ход мыслей, приведший к такому выводу?
|
|
|
|
|
Nov 14 2008, 18:02
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Пожалуй да. Потому что цикл do используется только когда он должен выполниться хотя бы один раз. Как вам удается его применять везде - для меня загадка. Конечно загадка. Где Вы увидели в моем сообщении про применение везде. Было только Цитата вот я принципиально стараюсь писать циклы а до Цитата применять везде дистанция огромного размера. Объясню подробнее. Практически, цикл do{}while(--var) будет оптимален на всех процах. Даже компилятор почти не сумеет это дело попортить. Если возможно нулевое количество итераций, частенько наиболее оптимальный вариант - if (var) do{}while(--var); Цитата Что же касается постоянного использования goto - то будь я на месте вашего работодателя, я вас немедленно бы уволил. Потому что от программы недостаточно чтобы она работала, нужно чтобы ее мог легко понять другой программист. Я же давал ссылку, там прямо написано: Цитата - настоящие программисты не боятся использовать GOTO; Посмотрите на исходник библиотечной функции printf (точнее, formatted_write). Будете удивлены. Ну и если смотреть глобально - я уже почти не наемный работник. Вот осталось до нового года дотянуть и нафиг, увольняюсь. Я теперь сам работодатель и не принимаю на работу тех, кто боится применять goto :-P
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
  |
6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0
|
|
|