roboforum.ru

Технический форум по робототехнике.

C vs ASM -прочитай и никогда не поднимай эту тему на форуме!

Ответить

Re: C vs ASM -прочитай и никогда не поднимай эту тему на форуме!

repository » 08 окт 2009, 22:50

Си появился же не просто так. как и Java, Бейсик, ПХП.
Качество языка - это какой объем проекта он позволяет поддерживать без головной боли.
Си тут лучше, чем асм, а С++ лучше чем С.
А когда только для своего удовольствия - то разве может быть лучше, чем то, что мне нравится?
Как говорил один мой знакомый военный фотограф - лучше тот способ, которым пользуешься.

Re: C vs ASM -прочитай и никогда не поднимай эту тему на форуме!

blindman » 09 окт 2009, 05:13

Daniloff писал(а):Но с другой иной раз один некошерный goto - и двух десятков невразумительных строк как не бывало :D

А setjmp/longjmp тогда - ересь несусветная ? :ROFL:

Или святой грааль? :D

Re: C vs ASM -прочитай и никогда не поднимай эту тему на форуме!

Daniloff » 09 окт 2009, 09:43

ну, где-то так! :wink:
Код: Выделить всёРазвернуть
Try to avoid goto, setjmp, longjmp. 


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

Если же человек делает вещицу для себя, в единственном, так сказать, экземпляре, под конкретное железо и никуда не торопясь, из спортивного интереса решающий задачку нехватки десятка байт или пары мегагерц, то asm is the best chioce :good:
Плюс - даже в таком случае фрагменты, библиотеки и процедуры можно без труда использовать в других проектах, на других микроконтроллерах той же фирмы.

Re: C vs ASM -прочитай и никогда не поднимай эту тему на форуме!

blindman » 09 окт 2009, 09:49

Только если задачка именно так и стоит - сыкономить любой ценой десяток байт. Для любителей - проблема ИМХО надуманная. А вот в промышленных условиях как раз имеет смысл экономия в десятки центов на чипе, может оправдать затраты на написание максимально компактной программы.

Re: C vs ASM -прочитай и никогда не поднимай эту тему на форуме!

galex1981 » 09 окт 2009, 09:50

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

Если же человек делает вещицу для себя, в единственном, так сказать, экземпляре, под конкретное железо и никуда не торопясь, из спортивного интереса решающий задачку нехватки десятка байт или пары мегагерц, то asm is the best chioce

Точно! :good:

Re: C vs ASM -прочитай и никогда не поднимай эту тему на форуме!

=DeaD= » 09 окт 2009, 10:06

ИМХО асм нужен в 3 случаях:
1. Асмовые вставки для оптимизации скорости работы;
2. Небольшие по коду и массовые устройства (для экономии объема памяти => более дешевые контроллеры => при огромных тиражах существенный экономический эффект от выбора более дешевого контроллера, покрывающий расходы на большее время разработки).
3. Чтобы научиться асму и потом спокойно применять его в случаях 1 и 2 :) (сюда же относим и спортивный интерес).

Re: C vs ASM -прочитай и никогда не поднимай эту тему на форуме!

Snable » 09 окт 2009, 21:21

Есть такой чел... Макконелл... Он в своей книжке "Совершенный код" написал, что за всю жизнь ему пришлось жестко оптимизировать всего 1 прогу. Он писал быстрый декодер для DES по-моему, но не суть. Суть вот в чем... (Цифры не точные, поскольку читал давно)

Он писал на Java сначала.... Прога работала около 30 минут.
Он нашел узкие места, оптимизирал их на Java и она стала работать 10 минут.
Развернул циклы и она стала работать 5 минут. Но его это не устраивало.
Он переписал на Си. Прога работала 4 минуты.
Опять поискал узкие места и оптимизировал, полностью развернул пару циклов и прога стала работать 1 минуту. Его это тоже не устраивало.
Он переписал пару строк(из многих тысяч) в узких местах на асме и прога стала работать 15 секунд. Ему надо было уложиться в 30 секунд. Но прогу стало невозможно читать!

Так вот, о чем я.
Если надо, чтобы прога работала быстро, то надо определиться, насколько быстро она должна работать и оптимизировать до того уровня, который нужен.
А на асме тут народ, наверное, пишет, потому что там "оптимизация по умолчанию". Я считаю, что умнее компилятора большой кусок кода никто не напишет из здесь присутствующих, а вот времени на это затратит до фига.
В соответствии с принципом Парето - 80% времени программа выполняет 20% строк. Реально же зависимоть несколько иная - 90% времени программа выполняет <1% кода.
Лучшее решение в сложных проектах - писать на Си 99% кода и 1% на асме, чем писать все на асме, чтобы никто не понял (и не помог, если потребуется)

Каким боком сюда вписывается Бэйсик? Это как Джава в примере выше. Программы на нем более понятны, поскольку они более формализованы.
Это не асемблер, где можно "битик туда-сюда-в_то_место-забыли-а_теперь_вот_тут а параллельно еще 30 таких же цепочек"...
И не Си, где можно написать одно и то же 50 способами...
Это четкий язык без синтаксического сахара и без четкого контроля за всем, что происходит внутри устройства, на котором исполняется код.
Именно поэтому он лучше для начинающих.

Re: C vs ASM -прочитай и никогда не поднимай эту тему на форуме!

avr123.nm.ru » 09 окт 2009, 21:30

Рекомендую начинающим начинать программировать на Си для микроконтроллеров. Т.е. не изучать язык Си, а учится программировать микроконтроллер на Си.

Re: C vs ASM -прочитай и никогда не поднимай эту тему на форуме!

=DeaD= » 09 окт 2009, 21:38

Snable писал(а):Я считаю, что умнее компилятора большой кусок кода никто не напишет из здесь присутствующих, а вот времени на это затратит до фига.

Да фиг с ним умнее - главное сколько ошибок понаделают и сколько времени эти ошибки потом искать...

Re: C vs ASM -прочитай и никогда не поднимай эту тему на форуме!

Daniloff » 09 окт 2009, 21:49

Кто нибудь знает как на си писать под pic16f84a? :wink:

Re: C vs ASM -прочитай и никогда не поднимай эту тему на форуме!

=DeaD= » 09 окт 2009, 21:52

А в чем проблема? Под него нету компилятора Си? Или вы не смогли найти примеры в инете?

Re: C vs ASM -прочитай и никогда не поднимай эту тему на форуме!

contr » 09 окт 2009, 22:04

Кто нибудь знает как на си писать под pic16f84a?

качаем HiTech, скажем такой HCPICP-pro-9.60PL6.4070.exe, кажем его в MPLab и работаем. Правда с этим МК проще общаться на asm.

Re: C vs ASM -прочитай и никогда не поднимай эту тему на форуме!

avr123.nm.ru » 09 окт 2009, 22:17

Daniloff писал(а):Кто нибудь знает как на си писать под pic16f84a ? :wink:

Так же как и для любого PIC. Вот конкретно шаг за шагом первый проект - попробуйте по аналогии - http://mcc18.narod.ru

Re: C vs ASM -прочитай и никогда не поднимай эту тему на форуме!

contr » 10 окт 2009, 18:53

Так же как и для любого PIC. Вот конкретно шаг за шагом первый проект - попробуйте по аналогии - http://mcc18.narod.ru

Си понимают многие компиляторы, так что использовать можем для любого МК, в т.ч. и РС. А ссылка крайне неудачная. PIC18ххх много сложнее, а компилятор С18 заточен именно под это семейство. Каждый компилятор имеет свои особенности. С18 достаточно сложен и не имеет русского хелпа. Для начинающего это не лучший выбор.

Re: C vs ASM -прочитай и никогда не поднимай эту тему на форуме!

avr123.nm.ru » 10 окт 2009, 21:25

Вы ВНИМАТЕЛЬНО почитайте что написано перед ссылкой.


Rambler\'s Top100 Mail.ru counter