Размер кода явно больше чем на FastAVR, это вы сами подтверждаете 4.8% памяти ATmega8.
Как видно, ассемблер существенно эффективнее высокоуровневых языков. Поэтому его целесообразно использовать для небольших проектов, где выигрыш в объеме кода существенен.
С этим глупо спорить, но мы обсуждаем именно высокоуровневые языки, а не асм.
Пока что AVR-GCC проигрывает FastAVR'у в размере кода.
Пардон, опечатка вышла (уже поправил). Я писал и компилировал все под ATmega48. У ATmega48 в два раза меньше памяти, и программа у меня немного сложнее по логике (я уже говорил, больше ТВП и код инициализации). Так что расхождение спорно... Ладно, Бог с ним. Я готов признать, что компиляторы С и Бейсика генерируют код, примерно одинаковый по размеру (с учетом вышесказанного).
Разница между теорией и практикой на практике гораздо больше, чем в теории.
YS писал(а):ИМХО хватит плодить быдлокодеров - не стоит замусоривать мозг Basic'ом. Лучше сразу изучать С для ПК и МК и ассемблер для МК - без знания специфического ассемблера невозможно достаточно хорошо изучить архитектуру МК и писать эффективные программы (и вообще понимать, что к чему), а про реализацию USB (и четких временных интервалов вообще) на бейсике можно просто забыть.
Т.е. хотите сказать, что бейсик не стоит даже внимания? Дело в том, что самостоятельное изучение С взорвёт мне мозг. Считаю, что для меня это сложно, так как нет рядом никого, кто мог бы на пальцах разъяснить основы.
Думаю, что С и другие языки имеют гораздо больше возможностей по сравнению с бейсиком, но без учителя самостоятельно я их выучить не сумею. Зато сейчас читаю 20-и страничный учебник по PureBasic-у и что-то начинаю понимать (или так только кажется). Может, когда пойму основы будет и проще С или Ассемблер освоить, но пока буду "быдлокодером".
Думаю, что С и другие языки имеют гораздо больше возможностей по сравнению с бейсиком
С++ и ассемблер конечно помощнее, но в тоже время, намного сложнее!
Ассемблер сам по себе не очень сложный, сложно на нём кодить большие проги.
Для создания прог, прикладного типа (оконные проги, игры), хватит и бейсика, но для создания системных прог (уровень ядра ОС, драйверы), нужно использовать Си или асм.
Может, когда пойму основы будет и проще С или Ассемблер освоить, но пока буду "быдлокодером".
Все начинающие программисты, в той или иной являются "быдлокодерами" не зависимо от языка программирования!
Это проходит со временем, при появляении опыта.
Например, я пишу проги в основном на бейсике, но в тоже время не являюсь "быдлокодером", т. к. чётко понимаю что делаю и как всё это работает.
С++ и ассемблер конечно помощнее, но в тоже время, намного сложнее!
Дело в том, что самостоятельное изучение С взорвёт мне мозг.
Все это неправда. Синтаксис С гораздо проще синтаксиса Бейсика и Паскаля. Я сам когда-то был ярым фанатом Паскаля, но когда познакомился с C, сразу перешел на него. Однако, мы сравниваем с Бейсиком. Итак:
Объявление переменных.
Бейсик: Dim x As Integer
C: int x;
Что проще?
Условный оператор:
Бейсик:
If <условие> Then
<код истинного условия>
Else
<код ложного условия>
End If
For <переменная>=<консатнта> To <константа> Step <число, которое прибавляется к переменной на каждом шаге цикла>
<код>
Next <переменная>
С:
for (<переменная>=<константа>; <условие>; <код, выполняющийся на каждом шаге>)
{
<код>
}
Здесь надо отметить особое преимущество С: в цикле for на С мы можем не только просто инкрементировать переменную на каждом шаге, но и вообще изменять ее КАК УГОДНО, хоть по синусу. Это определяется кодом, выполняющимся на каждом шаге.
Описание подпрограмм:
Бейсик:
Процедура:
Sub <имя подпрограммы> [(<параметры>)]
<код>
End Sub
Как видно, синтаксис С гораздо легче и эффективнее. И вместе с тем он дает дополнительные возможности (см. хотя бы пример с циклом for). Тут еще есть сторонники Бейсика?
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Все это неправда. Синтаксис С гораздо проще синтаксиса Бейсика и Паскаля. Я сам когда-то был ярым фанатом Паскаля, но когда познакомился с C, сразу перешел на него. Однако, мы сравниваем с Бейсиком.
Один из недостатков синтаксиса Си заключается в том, что многие операции завершаются фигурной скобкой и если писать по быдлокодёрски, без отступов и лепить всё в кучу, то потом сам не разберёшся что к чему!
x.l ; Переменная типа Long
y.b ; Переменная типа Byte
Ну и что проще?
Бейсик:
For <переменная>=<консатнта> To <константа> Step <число, которое прибавляется к переменной на каждом шаге цикла>
<код>
Next <переменная>
Step <число, которое прибавляется к переменной на каждом шаге цикла> и <переменная> после Next это не обязательные параметры и их можно не использовать.
Здесь надо отметить особое преимущество С: в цикле for на С мы можем не только просто инкрементировать переменную на каждом шаге, но и вообще изменять ее КАК УГОДНО, хоть по синусу. Это определяется кодом, выполняющимся на каждом шаге.
Хотел бы обратиться к топикстартеру - пока мы с ув. PB_EXPERT спорим, Вы пишите, на чем Вам удобно. На самом деле язык не так важен, как мозг...
#pragma _holywar
если писать по быдлокодёрски, без отступов и лепить всё в кучу, то потом сам не разберёшся что к чему!
Собственно, это вынуждает использовать отступы, прививая хороший стиль программирования.
Обратите внимание на то, что завершающие операторы имеют разные имена
Давно уже обратил. А еще я обратил внимание на то, что фигурная скобка быстрее в написании и удобочитаемее (меньше загромождает текст программы, позволяя сконцентрироваться на именах функций и операторов). Поэтому и перешел с Паскаля на С. И, кстати, если команда всего одна, то фигурные скобки можно вообще не ставить. Т.е. будет
if (<условие>)
<команда>
Где эти возможности?
А for не всчёт, т. к. вы ошиблись посчитав что в бейсике нельзя присвоить произвольное значение переменной-счётчику.
Я не имел в виду присвоение значения переменной-счетчику - естесственно, это можно сделать. А вот как Вы опишете на Бейсике такие конструкции:
for (;;);
или
float i;
for (i=10; i>0; i=i-i*log(i))
{
...
}
Заметьте, последняя инструкция в for выполняется на каждом шаге, без всяких инекрементов по умолчанию. Т.е. это мы определяем, что делать с переменной на каждом шаге цикла, и делать ли вообще. В Вашем же примере все равно по-умолчанию будет производмться инкремент.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
YS писал(а):Хотел бы обратиться к топикстартеру - пока мы с ув. PB_EXPERT спорим, Вы пишите, на чем Вам удобно. На самом деле язык не так важен, как мозг...
#pragma _holywar
Мне очень интересно наблюдать за вашим спором Хоть я и ещё мало, что понимаю, но зато, теперь понимаю, в чём же заключается отличие разных языков программирования. Если удастся освоить бейсик и решу дальше заниматься программированием (для себя, для своих скромных нужд), то следующий язык программирования, который решу выучить, будет С или ассемблер (т.к. МК программировать нужнее мне, чем оболочки) и, возможно, к Вам обращусь за помощью с советом порекомендовать какой-нибудь учебник.
А существует ли портированая версия этой программы? Одну в интернете нашёл, но что-то вылетает постоянно.
Дело в том, что на работе запрещено устанавливать нелицензионные программы
И ещё, когда сделаю программу в Visual Designer и выбираю в ней PureBasic editor, то выскакивает куча окон с ошибкой о невозможности создать код.
А существует ли портированая версия этой программы? Одну в интернете нашёл, но что-то вылетает постоянно.
Все версии являются портабельными и без проблем работают с флешки.
Для этого, нужно установить PureBasic как обычно, а затем скопировать папку с установленой программой на флешку. Для перевода среды в портабельный режим, её следует запускать с ключом /PORTABLE
Это можно делать с помощью BATника или небольшой программки
memento писал(а):И ещё, когда сделаю программу в Visual Designer и выбираю в ней PureBasic editor, то выскакивает куча окон с ошибкой о невозможности создать код.