программирование

Velocity сказал(а):
к сожалению документацию как на контроллер, так и на микрокомпьютер изучать приходится почти полностью.

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


Velocity сказал(а):
Есть две большие разницы, между перекомпиляцией игрушки на другую ось или переносом софта, работающего с перифирийными микросхемами. Вам для проекта придется изучить приличное количество специализированных м/с от датчиков атмосферного давления, до гироскопов, компасов, АЦП и т.д. Интерфейсы общения с ними будут разные, уровни сигналов тоже разные.

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

За это буржуи и любят покупать такие штуки - платят десятки тыс $ в год, что сильно время экономит, да и не большие это деньги для какого-нить боинга, а время дороже, да и спецы по компиляторам на дороге не валяются...
(строго говоря они экономят на этом очень сильно - поддержка фирмы стоит 14000 EUR/год, но нанять собственного спеца по компиляторам стоит в несколько раз дороже - зарплата среднего программиста 70-100K$/год, а такого уровня в несколько раз больше, да еще поди поищи, их вообще в мире мало, как и языков программирования)


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

Vladimir
PS  ну дак че, как сайты назвать?..
"как вы лодку назовете - так она и поплывет" 😉)
 
Было такое у меня, когда победил в конкурсе, проводимом одной фирмой, софт растиражировали, а об оплате "забыли". Правда через месяц сработал таймер и...растиражировали софт занявшего второе место, потому-что он не поставил защиту от этих крокодилов. 

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

дайте-ка попробую угадать - ви профессианальный программист?

Нет, я начинающий оператор станка с ЧПУ.

Но уже поздно пить боржоми 

Ну, так и не пейте, раз поздно.

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

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

И проще ее решить один раз, кардинально.

Вы что, решили сами себя засадить пожизненно в каталажку?
Жестоко, но для дела очень полезно.

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

Да вы, к тому же еще и неуч! Нет тактов ассемблера, а есть команды ассемблера. Но есть такты центрального процессора. Так вот, команды ассемблера имеют определенную длину в тактах ЦП. Алгоритмист вы наш, дилетантский. Купите книжку Брябрина и выучите ее на зубок. Потом приходите, поговорим. 

ну а этих [highlight]собак[/highlight] безработных программистов нынче от 100 баксов можно стаями набирать столько хочешь

Только самая паршивая скотина, может назвать человека собакой. Тут и раскусывать нечего, итак все видно.
 
[highlight]Не проще ли[/highlight] за то-же время изучить какую-нить серьезную технологию, которая и через 100 лет будет поддерживаться и работать?

Проще! Поэтому надо изучать COBOL. Написанные на нем программы будут поддерживаться до скончания США. Поэтому, только и только COBOL!
 
а там обычно вместе с компилятором предлагаются еще и библиотеки, всякие и разные(причем они стоят почти столько-же, сколько и сам компилятор - даже стандартная библиотека ввода-вывода языка).То есть, если в библиотеке на одной платформе есть процедура SendByteI2C(), то 99% что она будет в библиотеках для всех платформ, и причем будет работать как надо.

ага, криворукие библиотеки я видел, и не раз  http://www.microchip.su/showthread.php?t=11863

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

Переменная I представляет собой полное слово с фиксированной точкой. I принимает значения 1 либо 2. Если I оказалось равным 1, замените его на 2 и наоборот.

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

Вот такую закладку ни одна начальника не найдет,

а это смотря какая 😉

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


Причем раздолбал практически отдим symdeb(это такой чуть продвинутый debug) - он в памяти занимает всего 37 кб, так что не проблема их хоть 10 копий загрузить на все прерывания и точки отладки...  Даже на стек влазит 😉

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

Дак против лома не помогло - я ее через макросы до этого места командами p и t проходил(они CC не всегда ставят), а потом после этого фрагмента и расшифровки уже командой g adr можно сразу доехать до нужного места, дальше командой r подправляешь контрольную сумму и flag T процессора(там еще на прерывании для отладки какая-то хрень висела типа параллельной программы, это им тоже не помогло), и поехал дальше, след. уровень потрошить...   Так забавно - куда интереснее любой игрушки 😉


А еще есть спец коды, которые, вообще, ни одним тестированием не обнаруживаются.

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

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

Ну и, в-третьих - в серьезных проектах выпендриваться обычно просто запрещено.  То есть трудно будет прятать - не где просто 😉


Да, ну и для самых мудрых хорошо помогает строчка pragma Ada83; при компиляции - тока программерам не говорите, а то они меня покусают 😉)

дайте-ка попробую угадать - ви профессианальный программист?
Нет, я начинающий оператор станка с ЧПУ.

rs274 ?


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

ага, тока профессиАнал по халтуре - а то они сами не знают что нельзя халтурить...

Приходиться над каждым программером по манагеру ставить - чтоб проверял.  А чтобы и тот не халтурил - еще одного над ним...  и тд, рекурсивно, до бесконечности 😉

Но и это помогает мало - все равно халтурят ведь!


Так что с вами будет проще - можно будет даже не проверять.  Сами знаете - если упустите какую халтуру(а Аду проверять легко даже новичку, это вам не Ц), то дальше за вами придет мистер Естесственный Отбор, а я слишком добрый для начальника 😉)


Хотя есть еще один вариант решения проблемы - аппаратный.
Для этого надо будет изготовить аппаратный девайс из хорошей пружины, гири и боксерской перчатки.  Ага, и драйвер сразу повесить на не обработанные exception - чтобы как тока какой глюк не плановый вылезет на обработанный - так эта груша из-за монитора выпригивает - и в лоб!   И так до полной выработки условного рефлекса 😉)

А по-другому эти халтурщики не понимают...

ну а этих [highlight]собак[/highlight] безработных программистов нынче от 100 баксов можно стаями набирать столько хочешь

Только самая паршивая скотина, может назвать человека собакой. Тут и раскусывать нечего, итак все видно.
[/quote]

дак это человека нельзя, но эти скоты не люди же...

Vladimir
 
А пусть tvv385 напишет алгоритм или программку следующей задачики:

Переменная I представляет собой полное слово с фиксированной точкой. I принимает значения 1 либо 2. Если I оказалось равным 1, замените его на 2 и наоборот.

ууу, это сложный вопрос - для начала надо уточнить в каком формате данные...
(хотя Ц-ники бы решили вот так  I = I xor 3;  )

1.  В каком формате отрицательные числа - дополнительный код?

2.  Если плавающая точка - то есть ли скрытый бит?   (кстати знаете что это такое?)

3.  На сколько разрядов(с каким шагом) выравнивается мантисса?

Ну и еще шт 20 вопросов можно написать...

Потом программа будет строчек на 100, и стр на 200 документации 😉

Vladimir
PS  а как вы хотели?  Сертификация 😉)
 
Даю полный текст:

Тест
Какой Вы программист?

Этот тест расскажет о вашем программировании больше, чем вы сами хотели бы знать.

[highlight]Переменная I представляет собой полное слово с фиксированной точкой. I принимает значения 1 либо 2. Если I оказалось равным 1, замените его на 2 и наоборот.[/highlight]

Сравните ваше решение с десятью предложенными. Найдите одно или несколько наиболее похожих на ваше и прочитайте в разделе "категории" краткую характеристику. Вы можете кодировать на любом языке, но для сравнения предпочтительнее всего использовать PL/1.

РЕШЕНИЯ

1.           IF I='2' THEN I=1;
             ELSE I=2;

2.           IF I=2 THEN I=1;
             IF I=1 THEN I=2;

3.           IF I=1 THEN GOTO SKIP;
             I=1;
             GOTO DONE;
    SKIP:    I=2;
    DONE:

4.           J=2;
             IF I=2 THEN J=1;
             I=J;

5.           DECLARE SWITCH LABEL;
             .  .  .
             IF I=1 THEN SWITCH=ONE;
             IF I=2 THEN SWITCH=TWO;
             GOTO SWITCH;
    ONE:     I=2;
             GOTO DONE;
    TWO:     I=1;
    DONE:

6.           DECLARE ONETWO(2) FIXED BIN(31) INIT (2,1);
             .  .  .
             I=ONETWO(I);

7.           I=3-I;

8.           I=I-(I/2*2)+1;

9.           IF I=2
                   THEN DO;
                        I=1;
                   END;
                   ELSE DO;
                        I=2;
                   END;

10.          IF I=1 THEN I=2;
             IF I^=2 THEN DO;
               PUT LIST('ПЛOXOE  I - ЗAMEHEHO HA 1');
                    I=1;
               END;

КАТЕГОРИИ

    1. Недавний выпускник школы IBM.
         Не более одного из десяти окончивших эту школу знают разницу между 2 и "2". Удивительно, как можно вообще программировать без знания столь фундаментальной концепции.
    2. Преподаватель программирования.
         Это решение хуже предыдущего. Много ли, однако, обучающих программированию сами написали и отладили хотя бы одну программу?
    3. Программист на FORTRAN'е, только что окончивший курс PL/1.
         Да, старую собаку не научишь новым штукам! Это решение дает верный результат, но это все, что можно про него сказать.
    4. Программист на ассемблере, прошедший тот же курс.
         Это решение не является ни прямым ни эффективным. Возможно, это результат обучения языку PL/1. В нем есть та прелесть, что оно не содержит самомодифицирующих кодов, но это лишь результат возврата на землю после изучения языка высокого уровня.
    5. Системный аналитик.
         Прекрасная иллюстрация для тех, кто думает, что обязанность системного аналитика - такая разработка алгоритма, в которой окажется некомпетентен даже хороший и опытный программист.
    6. Сomputer Scientist.
          Наверное, это самое умное решение. Однако такие "сальто-мортали" без комментариев оказываются весьма непонятными. Искусство требует жертв, а жертвой будет тот, кто разбирается в этой программе - может быть, сам автор через три месяца.
    7. Математик.
          Очень похоже на предыдущее, столь же элегантно, но опять-таки встает проблема: как же в нем разобраться?
    8. Программист, заботящийся о секретности своей программы.
          Вот работа настоящего композитора, и конечно, никаких комментариев. "Я могла бы придумать и более запутанный способ, как это сделать, - с гордостью сказала белая королева".
    9. Структурный программист.
          Каждому ясно, что сие произведение - структурная программа. Иногда заботятся только о том, сколько колонок надо отступить от края листа. Настоящее структурное программирование - это прежде всего техника, и применять ее надо с умом.
    10. Хороший программист.
       Заметьте, что ни одно из решений 1-9 не проверяло диапазон значений I, а это весьма опасно. К несчастью, вас не спасут ни структурность, ни фантастические алгоритмы, ни элегантность решения, если вдруг окажется, что I первоначально не было равно ни единице ни двойке.
 
гы 😉))

Это похоже рекорд - 10 вариантов - и все 10 не правильные 🙁


PS  надо будет у "современных программистов" спросить - наверняка еще шт 20 найдут, и тоже все не правильные 😉)
 
наверняка еще шт 20 найдут, и тоже все не правильные

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

Поэтому писать придеться примерно так

const eps = 0.001;

case abs(I - 1) < eps then...
case abs(I - 2) < eps then...
else exception("input data error")


Проверка и обработка ошибок на допустимый диапазон тоже обязательна - хотя теоретически можно изменить спецификацию и писать например if I = 1 then ... else,
то есть вторым вариантом рассматривать все другие числа, не только заданные.  Но лучше проверить...
(Иногда полагаются на range check - но его можно отключить ключами компилятора, это ускоряет работу, но тогда не будет проверок на допустимые диапазоны в данных)


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


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


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

Ассемблер  ;D

либо CANCEL, либо GOTO в Треп и болтовню 

во флуд ИМХО.
 
Народ, вы или давайте по порядку - сразу сделаем сайты и темы(или рассылки), и там уже будем обсуждать тонкости программирования,
или не обижайтесь что в теме будет все в перемешку...
(лично мне все равно - но не все ТИМы могут вылавливать ценное из потока.
Сайт потому и удобнее - что туда из тем можно будет тока нужное с сортировкой по подтемам переносить, против 100-страничных тредов пока еще никто ничего кардинального не изобрел)


а для всех сертифицированных по авиастандартам платформ Ада уже давно есть.
x86?

A zdes naoborot, Ada perevodiat v C -
http://www.mapusoft.com/ada-to-c-changer/

Tak pochemu ploho srazu v C?

потому что есть одна "маленькая" мелоч - Ц выгоден тока "профи"-программерам(читай - паразитам) с большим опытом кодирования - вот тока им все равно, на чем исходник.
(но ошибок все равно будет больше на Ц, с учетом затрат времени на отладку производительность труда на самом деле оказывается на Ц в 2 раза ниже, чем на Аде, хотя формально на небольших программах(без учета времени отладки) будет одинаково, не смотря на то что объем исходника на Аде или Паскале будет в 2-3 раза больше)

Чтобы хотя бы средне писать на Ц, нужно несколько лет опыта, к реальным проектам можно подключать программистов тока если у них не меньше хотя бы 5-10 лет опыта.
(причем это должно быть не просто любительство от случая к случаю, а именно ЕЖЕДНЕВНАЯ работа по несколько часов в день, и желательно чтобы большого перерыва в стаже не было тк навыки быстро забываются)

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


То есть программировать на Ц для нормальных инженеров(то есть которые еще чем-то полезным занимаются, а не только ИБД на окладе программистами) практически не реально - нужно тратить на это очень много времени, которого обычно нет.

С Адой все проще - тут вообще после стандартных 2-3 недель обучения языку можно любого дурака даже к серьезным проектам подключать - что-то испортить ему будет очень трудно тк язык и компилятор сделаны так, что практически все децкие ошибки вылавливаются еще на этапе компиляции, а кривизну(или халтуру вроде отсутствия каких-то обработок ошибок и тд) может легко проверить любой школьник...  (Причем для проверки даже не надо слишком хорошо знать язык - синтаксические и тп ошибки 100% все отлавливает компилятор, а почитать комментарии и посмотреть есть ли обработка всех кодов и ошибок проверить может вообще любой дурак даже совсем не зная языка, там все понятно - в отличии от Ц где чтобы написать хорошо читаемый исходник надо быть гением, Ада устроена так, что не читаемый исходник врядли пройдет компиляцию вообще, огребут кучу ошибок компиляции, поматеряться, и в итоге все равно будут вынуждены сделать нормально)


И вообще там еще в Аде очень много фишек и плюшек реализовано, кроме более читаемого и понятного исходника язык специально сделан так, чтобы ошибок было как можно меньше - вояки же для себя заказывали, а как известно "чем больше в армии дубов - тем крепче оборона" 😉
(я вообще не люблю вояк и их подходы - но Ада очень редкое исключение)

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

https://bitcointalk.org/index.php?topic=199273.msg2256307#msg2256307


PS  начинаю любить си - пара "ошибок", и можно хоть миллиард украсть без проблем, причем фиг накажешь, если че за ошибки особо никого не посадишь, а миллиард уперли...
(капитализация биткойна уже 1.5 миллиарда баксов - если бы этот новый форк имел чуть больше изменений и смотрели бы не патчь, то 99% что ничего бы не нашли, даже профи-программисты, поэтому надо в серьезные проекты внедрять Аду принудительно)
 
Назад
Вверх