driver Частично зависит от назначения языка. Я Паскаль тут "рекламирую" не из-за его идеальности, а из-за того, что изначально был задан вопрос, что учить. Модула-2, ИМХО, лучше, но где человек найдёт для неё компилятор, не говоря о нормальной среде разработки и т.д.? И именно из-за такой "приземлённой материи" фактически приходится выбирать между Паскалем и Си -- и, есно, я делаю выбор в пользу Паскаля.
проблемно-ориентированность, настраиваемость синтаксиса под конкретную задачу мне например для текущих задач нужна типизация как в асме в сочетании с лаконичностью ЯВУ
leo ничего странного, язык Си мне дает свободу в кодинге. Когда нужно - использую сложные конструкции, но на проверку - они оказываются простыми. А когда нужно - использую необходимый минимум. Все зависит от поставленной задачи.
Так так так. Я понял в этой теме можно давать любые ответы на любые вопросы? Сранник - есть такой пакет. Там Оберон, Модула и Паскаль Вообще, тогда лучше Аду брать - и компиль есть и кодить нормально научит
SII Вообще есть Exit, но это жестокий метод. При правильном и структурном программировании в такой фигне потребность возникает ну очень редко. Увы, в программировании сейчас полно слюнтяев, которые даже с фигурными скобками if до конца дописать ленятся, и оттого плодят точки выхода из функций, как тараканов.
компилятор Си сам их собирает в начало функции а то что в асмах LOCAL только в начале функции, это плохо, хотелось бы создавать и удалять локальные переменные по ходу выполнения кода, например, если в коде есть switch\case, в каждой ветви делать свои локальные переменные
beginner 1) Ошибки могут возникать случайно. Строгая типизация снижает их вероятность, хотя и не исключает, есно, полностью. В конце концов, можно некорректно использовать явное приведение типов. 2) Булевский -- это не числовой тип по смыслу. А как он хранится -- совсем другой разговор. Если б в Си был логический тип, несовместимый с числовым, то выражение вроде BoolVar = IntVar1 = IntVar2 вызвало б ошибку компиляции, ну а в реальном Си этого не происходит. 3) Ошибки могут возникать случайно, независимо от опыта и квалификации, и наличие докторов здесь роли не играет. Я прекрасно знаю, что & и && или там = и == являются разными операциями. Однако я не могу быть уверен, что я случайно не ошибусь (рука дрогнет и возникнет == вместо =, например). Случайно пропустил или лишний символ влепил -- и получил неверную логически, но корректную синтаксически программу. И ищи потом эту ошибку. 4) Редко или не редко -- другое дело. И см. п. 3 5) Когда пишешь, то вообще-то понимаешь, что пишешь. Ну а когда вернулся к той же программе через три месяца, например? Сходу понять бывает затруднительно, и даже комментарии не всегда помогают (в конце концов, в них обычно указывают, что должно делаться, а не то, что делается на самом деле). leo Угу. Обобщив, можно сказать так: в Паскале каждый оператор применяется для того, для чего он предназначен.
CyberManiac Exit не позволяет вернуть значение. А насчёт правильного и структурного не соглашусь: досрочный выход -- достаточно часто требуемая вещь. Конечно, без него можно обойтись, но только за счёт большей вложенности условных операторов и/или постоянной проверки лишних условий, от чего лучше избавляться.
GoldFinch Речь не о компиляторе, а о языке. А зачем? Если под них выделять место в каждой ветке -- лишние такты, ну а если выделять всё равно в самом начале, то почему б не продумать, сколько чего потребуется? Ведь в асме важен прямой контроль программиста над кодом, т.е. транслятор не должен заниматься отсебятиной.
зато в паскале есть встроенная переменная result, что гораздо лучше, чем int func() { int r=0; ... return r; }
SII Мне порой не нужна типизация если, например есть char sym = 'a'; и я хочу получить другой какой то символ - я пишу sym += 5; Мне понятно, что я получу 'e' Что в этом плохого? счас пишу проект под себя, был перерыв на 3 месяца, достаточно было беглого взгляда на код и на комменты, которыми я писал что делает каждая функция - хватило что бы понять, на чем я остановился Значит комменты были удачными.
SII Учить надо Си пригодится. А остальное по велению сердца. В Си мне не нравиться приведение типов: (тип) переменная. Сделали бы по человечески скобки, как в паскали и никаких проблем. тип(переменная) . В Си много чего запутанного чего можно упростить или избежать. Правда Delphi пошел по такому же пути . C# интересный язык. Много плюсов и много минусов.
SII Что есть следствие возможности вернуть значение большинства типов, а не только целого числа/числа с плавающей точкой/указателя. Можно было бы, конечно, сочинить какого-нибудь синтаксического мутанта, скрестив Exit с объявлением константы, но... Впрочем, может ещё сочинят Перегрузку операторов вот уже сочинили. Вот обычно так и бывает - можно, а не хотят. Несмотря на то, что это был бы правильный способ. Но есть люди, которым ради большей надёжности begin/end написать не вломы, а есть люди, которые даже свои любимые фигурные скобки поставить ленятся.
Я тут решил Java поизучать, это ж пипец, тот же самый С#. Во майкрософт дают, даже языки тырят (шутко).
beginner А то, что заграничные чудодеи вот тоже так же писали a&=0x20, а потом по бескрайним просторам Родины нёсся стон "а хрен ли в вашем ванючем линугзе фтупляют на большие и маленькие русские буквы" (с сортировками строк так и вообще такая джоппа творилась - до сих пор вспомнить страшно). Amarok, кстати, до сих пор фтупляет на русских тегах.
Мля, господа ассемблерщики, вы съели мой мозк. Уже который человек на этом форуме говорит вещи типа "а вот С++ отстой, потому, что YYY". А потом выясняется, что человек даже не удосужился заглянуть не то что в стандарт языка, а просто в приличный учебник, а про "YYY" он вообще из пальца высосал! Есть в С++ и такое приведение Code (Text): int x = (int)0.5; и такое Code (Text): double x = 0.5; int a = int(x); и такое Code (Text): int a = static_cast<int>(x); Читайте книжки... там иногда пишут интересные вещи