Easyelectronics.ru

Электроника для всех
Текущее время: 27 ноя 2022, 07:44

Часовой пояс: UTC + 5 часов


Правила форума


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



Начать новую тему Ответить на тему  [ Сообщений: 90 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Re: А какой язык прог. вы считаете самым лучшим?
СообщениеДобавлено: 20 окт 2010, 15:29 
Старожил
Аватара пользователя

Зарегистрирован: 03 сен 2010, 22:46
Сообщения: 6179
Откуда: Москва
Ну, если уж на то пошло, то с точки зрения синтаксиса лучше начинать с Java. Синтаксис этого языка намного более логичен, проработан и самоочевиден для начинающего, к тому же это синтаксис настоящего, вполне удачного ОО языка. А потом уже можно разбираться с тонкостями С или С++.

В Java же существует и HAL, весьма и весьма стандартный. Собственно, вопросы переносимости в Java вообще возникают очень редко.

Что касается С, то его стандартность несколько преувеличена. Даже при переходе с одного компилятора на другой приходится заметно менять код, при этом целевая платформа может остаться прежней. За примерами далеко ходить не надо, достаточно взять avrgcc и IAR. Или IAR и Keil. Перенос достаточно сложной программы (типа RTOS, например) под другую среду разработки - как правило довольно нетривиальная задача с множеством подводных камней.

Естественно, что поверх С разработана масса стандартов, именно для лучшей переносимости проектов, та же MISRA-C или CMSIS. Но эти стандарты, увы, не единственные, и не являются обязательными.

Для сравнения, посмотрите как с этим обстоит дело в том же Java, где имеются стандарты практически на всех уровнях. Причем в основном они происходят из одного источника, увязаны друг с другом и жестко контролируются. Это одна из причин, почему бизнес-программирование предпочитает Java обычному С или С++.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А какой язык прог. вы считаете самым лучшим?
СообщениеДобавлено: 20 окт 2010, 15:47 
Старожил

Зарегистрирован: 22 мар 2010, 22:54
Сообщения: 3995
всё-таки си стандартен, но ровно на столько, на сколько это описывает стандарт. и если знать, ЧТО он описывает, что гарантирует, что оставляет на усмотрение компиляторописателя, то создание портируемого кода совсем не сложное. а непереносимый говнокод был и будет всегда, это не характеризует компилятор:)

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А какой язык прог. вы считаете самым лучшим?
СообщениеДобавлено: 20 окт 2010, 15:54 
Старожил

Зарегистрирован: 27 янв 2010, 09:59
Сообщения: 321
Откуда: Нижнекамск (Татарстан)
Ink писал(а):
на сколько я слышал (сам не сталкивался), тот же дотнет позволяет дергать функции винапи, коих не будет на другой платформе. написанная таким образом программа сами понимаете че. подсказывают, что и джава тоже это умеет.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А какой язык прог. вы считаете самым лучшим?
СообщениеДобавлено: 20 окт 2010, 15:56 
Старожил
Аватара пользователя

Зарегистрирован: 03 сен 2010, 22:46
Сообщения: 6179
Откуда: Москва
С - это не один стандарт, это целое множество стандартов. Часто несовместимых.

.NET и Java, хоть и конкурируют, созданы немного по разной идеологии. Java являются практически полностью платформно-независимой системой, абстрагирована от ОС, и в общем-то некая вещь в себе, принципиально использующая только базовые функции тех платформ, на которых работает. .NET, наоборот, фактически является частью операционной системы, и очень плотно в нее встроен. Впрочем, в этом случае переносимость и не была целью, вполне достаточно, что код работает на любых Windows платформах.

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

Программа на Java вполне может вызывать любые API, в том числе и зависимые от платформы, но как правило, этого не делается - для работы на этом уровне есть более эффективные средства, чем Java. Исключение - Android, где Java играет примерно ту же роль, что .NET в современных версиях Windows.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А какой язык прог. вы считаете самым лучшим?
СообщениеДобавлено: 20 окт 2010, 16:42 
Старожил

Зарегистрирован: 22 мар 2010, 22:54
Сообщения: 3995
akatenev писал(а):
С - это не один стандарт, это целое множество стандартов. Часто несовместимых.
там стандартов - по пальцам пересчитать. если их знать - проблемы не будет. чаще используется ansi c. вроде как. но знать лучше всё.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А какой язык прог. вы считаете самым лучшим?
СообщениеДобавлено: 20 окт 2010, 16:54 
Старожил

Зарегистрирован: 06 фев 2010, 17:22
Сообщения: 1557
Откуда: Иркутск
Языковые холиворы всегда такие забавные:)
Обязательно начинают вспоминать про скорость, кроссплатформенность, распространеность, среднюю зарплату программиста на выбранном языке. Особенно весело, когда скатывается в холивор асм vs C или его дальнейшее развитие компилируемые vs интерпретируемые:)

Самый лучший язык тот, за программирование на котором в данный конкретный момент времени платят деньги:)

Зная один статический типизированный, один динамический и один функциональный язык - считай можешь программировать на любом другом.
Тут уже другая проблема начинается, например что Java, что C# - практический идентичные языки. Но вот JavaEE и ASP.NET или Swing и WinForms - это уже две большие разницы. Хотя по сути принципы все теже, но осваивать все равно долго.

А вот для личных целей можно поиграться, посмотреть много различных языков и выбрать себе самый удобный.
Мой критерий удобности языка - большая выразительность при сохранении читабельности и наглядности кода. По-этому мой выбор - Ruby.
А вобще, мое краткое субъективное мнение по языкам, на которых я написал больше 1000 строчек:
C - ну это классика, обязательно нужно знать. В контексте данного сайта - для микроконтроллров.

C++ - темплэйты это нечто, можно делать очень веселые вещи:) Хотя сходная функциональность сейчас уже во многих языках появилась. Отсутствие стандартизированного сборщика мусора все портит, а также отсутствие нормальных строк на уровне языка а не библиотеки(ну и это же есть главное отличие от Java/C#:)).

Java/C# - шибко похожи, классический выбор всех университетов а также бизнес приложений:) Не зря сейчас это одни из самых распространенных языков. Один мой знакомый называет Java "объектным ассамблером", для обучения ООП Java самое то! Ну так же кроссплатформенность, причем что в Java, что в C# посредством Mono(за вычетом native кода). Правда Java'ский Swing под MacOS только после значительной обработки напильником выглядит нативно, а с Mono'ским WinForms вобще о нативности интерфейса кроме винды можно забыть, но вот Gtk# ничего так. В этих языках бесят всякие мелочи, например Boxing/Unboxing по историческим причинам. Ну и вобще, очень уж многословный код получается:) Кстати, C# уже практически вытеснил C/C++ с WinMobile мобильных устройств, а Java - это основной язык для Android, для классических JavaME телефонов и даже для книгочиталок:) Пришел мне наконец-то Amazon Kindle, так у них есть KDK(Kindle Dev Kit) на Java. Правда в закрытой бете, и на мой запрос открыть доступ, чего-то не отвечают:)

Objective-C - системный язык для Ma OS и IPhone:) Так же есть в gcc. Компилируемый динамический язык(что редкость). По первости очень непривычна Smalltalk'овская интерпретация ОПП, когда мы не "вызываем метод у объекта" а "посылаем сообщение объекту". Кстати, в связи с популярностью IPhone, сейчас ObjC также один из самых распространенных языков. В ObjC 2.0 есть опциональный сборщик мусора.

JavaScrpt - хоть и начинается на Java, с Java имеет мало общего, ну разве что C-подобный синтаксис:) Язык интересен тем, что он во-первых динамический, а во-вторых в отличие от классового ООП основан на прототипах. А неинтересен тем, что сильно завязан на браузер. Правда народ с этим активно борется, путем всяких Serverside JS типа NodeJS и т.п. Но это уже очень специфично и совсем не "язык общего назначения". Правда можно отдельно собрать мозиловскую SpiderMonkey, но, у нее очень слабая интеграция с операционной системой. По сути, кроме print и read больше и нету ничего:) Совсем другое дело Rhino под Java платформу - пиши на JavaScript используя всю мощь JDK:) JavaScript кстати принес нам, повсеместно используемый JSON.

ActionScript 3(читать Flash(Flex):)) - ActionScript 3 - это то, что получиться, если скрестить Java и JavaScript:) Опциональная типизация, Java-style классы поверх JavaScript'овских прототипов - забавно вобщем:) Ну, соответственно все очень сильно завязано под Flash. Хотя есть у Adobe технология Air. Flash для десктопа, можно на AS3 писать кросплатформенные приложения:) По отзывам друга, который участвует в крупном Flash проекте - у Flesh большие проблемы со сборкой мусора. Где-то там память течет. Не удивительно, что на Linux и MacOS эти гадкие баннеры жутко тормозят:)

PHP - чуть ли не стандарт в web программировании. Сам по себе язык ничего интересного из себя не представляет. Ну, разве что в стандартной библиотеке очень оригинально функции(а не методы, наследие php 1-2-3-4:)) называются:) С пятой версии синтаксически - тажа Java, с поправкой на динамичность, 'var' и $ перед переменными. Это один из немногих языков, где в принципе нет реализации потоков, даже зеленых или сторонней библиотекой. Только unix like выкрутасы с fork и pipe:) Вобщем для личного использования ничем не примечателен. А вот если хочется работать программистом, то PHP нужно знать от корки до корки, вместе с CakePHP, Symphony, парой ORM типа Doctrine и Propel и т.п.:)

Pascal/Delphi(ObjectPascal!)/FreePascal - перед Java и C# это были самые популярные академические языки, ну, еще Basic. Pascal принципиально от C ничем не отличается(хотя в Turbo Pascal чуть ли не с пятой версии уже зачатки ООП появились, но об этом никто не знает:)) Delphi тот же C++, сильно популярным стал именно из-за среды разработки. В нем на то время формочки рисовать было удобние чем в MS VisualStudio:) Ну и инерция с Pascal. В самом языке - ничего нового и интересного нету, даже смысла смотреть его нет, разве что для общего развития. Т.к. денег на нем сейчас врядли где заработаешь(если не считать халтурки). FreePascal - кроссплатформенное продолжение идей ObjectPascal. Судя по всему там какие-то совсем неугомонные энтузиасты:)

Basic/VisualBasic(.Net)/VBA - Наверное, самый многословный синтаксис:) VB.NET почему-то необыкновенно популярен за рубежом, чуть ли не популярнее C#, что в нем такого они нашли?:) VBA очень специфичный, и отдельно от офиса не живет. Тоже ничем не примечательный язык.

Erlang - единственный(если не считать диалекта Haskell - Hope и немного Scheme) функциональный язык программирования, который я смотрел. Первое время - вобще ничего написать не получается, переход от императивного программирования(мышления:)) к функциональному очень не прост. Но, этот язык оригинален не только тем, что он функциональный. Основная его фишка - это сервера и прочие распределенные сетевые системы. Создаем поток(process в Erlang'е) и он может быть обычным системным потоком или же вобще процессом на другой, географически удаленной машине. Потрясающая отказоустойчивость достигаемая средствами языка. Очень оригинальная идея: Pattern Matching для бинарных данных. Супер просто:) Вобщем настоятельно рекомендую поиграться с этим языком:)

Tcl - забавный интерпретируемый язык, где все есть строка:) Принес нам один из самых популярных кроссплатформенных GUI фреймворков - Tk. Для практического применения язык через чур своеобразный. А вот поиграться с ним очень интересно:)

Perl - регулярные выражения на уровне конструкций языка - это очень удобно для достаточно широкого круга задач. Поэтому Perl (был) так популярен в Web и в администраторских скриптах. Правда нету ООП, только модули выкручиваться:)

Python - принудительные отступы - это на любителя. Язык очень интересный с точки зрения своей динамичности. Что, например, открывает широкие возможности для метапрограммирования. Но, куча мелочей - нет регулярных выражений на уровне языка, куча функций в стандартной библиотеке(strlen("asdf") вместо "asdf".length - ужас!:)), другое страшное наследие типа забавных конструкций __init__ или __initialize__ а также self первым аргументом каждому методу(процедурное наследие:)). Кстати, Python занимает значительную часть web программировения. Такие фреймворки, как Django или TurboGears. Мой местный региональный портал написан на Python:)

Ruby - мой фаворит:) Из всех перечисленных языков - он самый лаконичный, притом(в отличие от Perl например:)) не в ущерб читаемости. Ruby можно рассматривать как идеалогически "чистый" Python. Динамичность и открытость классов делает метапрограммирование еще удобнее и мощнее чем в Python. Вобщем Ruby я использую практически везде. И скрипты автоматизации, и web программирования(Rails мне не нравиться, я фанат Sinatra), сборка приложений(rake). Все мечтаю под микроконтролеры его как-нибудь приспособить. Насчет метапрограммирования, моя статья http://habrahabr.ru/blogs/ruby/48754/ Конечно все это можно сделать и на других языках, но, писать придется намного больше:)

Все хочу повнимательнее посмотреть Io(интересный прототипный язык) и Haskell, тянет меня к функциональному программированию что-то:)

P.S.: Как всегда повелся на холивор, и аж целую простыню текста понапечатал:)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А какой язык прог. вы считаете самым лучшим?
СообщениеДобавлено: 20 окт 2010, 17:48 
Старожил
Аватара пользователя

Зарегистрирован: 03 сен 2010, 22:46
Сообщения: 6179
Откуда: Москва
Такая массовая популярность PHP и распространенность PHP программистов - это скорее местное явление, на западе доля сильно поменьше, особенно в коммерческих проектах. Видимо, это связано с разницей в среднем масштабе и бюджете проекта, да и вообще с разницей в подходе к построению систем массового обслуживания.

А что касается популярности Visual Basic, то это просто исторически так сложилось, и связано в основном с особенностями американской системы образования, распространенностью MS Office и ценовой политикой производителей средств разработки. Популярность диалекта VB.NET - тоже следствие этой традиции, очень многие переучивались именно с VB.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А какой язык прог. вы считаете самым лучшим?
СообщениеДобавлено: 20 окт 2010, 19:26 
Заглядывает иногда

Зарегистрирован: 26 янв 2010, 21:54
Сообщения: 189
Откуда: Новосибирск
akatenev писал(а):
1. Виртуальные машины совершенно не "костыли", и нужны они не для того, чтобы причесывать зоопарки :) Вопросы переносимости в данном случае дело десятое.

Ну как же это не костыли? Тому есть яркий пример. В переводе на русский - "ну не шмагли мы, вы уж как-небуть саме".

akatenev писал(а):
2. На asm сейчас пишется, конечно, намного больше кода, чем 35-40 лет назад. Однако пропорция его по сравнению с высокоуровневыми языками, конечно, изменилась в меньшую сторону.

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

akatenev писал(а):
Поэтому встроенные решения особенной погоды не делают, несмотря на массовые тиражи.

А делают ли погоду, например, игровые консоли?

zyxman писал(а):
nathos писал(а):
Ну, для меня вот тоже все языки без жёсткой типизации - "недо"-языки.

Эт почему?

Потому, что никогда не понятно, "что же там должно вернуться". Девелопмент на ява-скрипте напоминает процесс отладки на яве. Запустили, дошли до брэйкпоинта, отрисовали переменную, посмотрели, что же там лежит. Пишем дальше. И так постоянно. Весьма утомляет.

zyxman писал(а):
Вообще возникает вопрос, а если в задаче типизация побоку, так зачем на нее время тратить?

Дело в том, что я таких задач не знаю. :) Любые задачи обрабатывают данные того или иного типа.

zyxman писал(а):
И третий вопрос: ну допустим я соглашусь, что типизация позволяет ловить ошибки на границах интерфейсов, но вот возьми и нарисуй мне в "языке строгой типизацией" Си тип данных, в котором только четные числа (а только делящиеся на 5)?

Вопрос - а зачем? Но мне проще на яве - там это будут классы, отнаследованные от java.lang.Integer, с перекрытыми списками допустимых цифр в числах и, местами, где используются округления.

zyxman писал(а):
Вот серьезно, многие реально зря ругают языки "без строгой типизации", потому что в действительно правильном языке, тебя просто не задалбывают необходимостью на каждом шагу делать конверсии, но ты всегда можешь встроить в нужном месте строгую проверку.

В действительно правильном языке конверсий обычно делать не приходится. Конверсии досаждали в яве до появления генериков. Потом - как отрезало.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А какой язык прог. вы считаете самым лучшим?
СообщениеДобавлено: 20 окт 2010, 19:37 
Старожил
Аватара пользователя

Зарегистрирован: 03 сен 2010, 22:46
Сообщения: 6179
Откуда: Москва
Да очень просто, не костыли. "Костылями" они могут быть в том случае, если вам надо программу, созданную для одной платформы, кровь из носу запустить на другой. Обычно это означает, что у вас проблемы с планированием, а совсем не то, что у кого-то были проблемы с разработкой.

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

Код для игровых консолей в общем объеме пишушегося кода практически незаметен, очень небольшие доли процента. Распространенность того или иного языка программирования в этой среде почти не влияет на общую картину.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А какой язык прог. вы считаете самым лучшим?
СообщениеДобавлено: 20 окт 2010, 20:03 
Старожил

Зарегистрирован: 06 фев 2010, 17:22
Сообщения: 1557
Откуда: Иркутск
akatenev писал(а):
Такая массовая популярность PHP и распространенность PHP программистов - это скорее местное явление, на западе доля сильно поменьше, особенно в коммерческих проектах. Видимо, это связано с разницей в среднем масштабе и бюджете проекта, да и вообще с разницей в подходе к построению систем массового обслуживания.

Ну не сказал бы. Подавляющее большинство веб проектов, что у нас, что на западе делаются на PHP. Java и ASP.NET по большей части для чего-нибудь сильно ответственного, типа интернет банкинга, разных биллингов и т.п.
У знакомого конторка - занимаются поддержкой и техническим сопровождением высоконагруженных сайтов, работают с буржуями. Так все их клиенты - одно сплошное PHP, за очень редким исключением.
akatenev писал(а):
А что касается популярности Visual Basic, то это просто исторически так сложилось, и связано в основном с особенностями американской системы образования, распространенностью MS Office и ценовой политикой производителей средств разработки. Популярность диалекта VB.NET - тоже следствие этой традиции, очень многие переучивались именно с VB.

Ага, примерно так и думал. Как у нас Pascal/Delphi:)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А какой язык прог. вы считаете самым лучшим?
СообщениеДобавлено: 20 окт 2010, 20:17 
Старожил

Зарегистрирован: 01 июл 2010, 15:30
Сообщения: 473
Откуда: Энгельс
В огранизации, где я тружусь примерно следующее распределение (по кол-ву разработчиков) меджу ЯП:
Ява - 60%,
Си/С++ - 30%,
С# - 10%.
Примерно такое распределение +/- по всему интерпрайз сектору.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А какой язык прог. вы считаете самым лучшим?
СообщениеДобавлено: 20 окт 2010, 20:18 
Старожил

Зарегистрирован: 06 фев 2010, 17:22
Сообщения: 1557
Откуда: Иркутск
nathos писал(а):
zyxman писал(а):
nathos писал(а):
Ну, для меня вот тоже все языки без жёсткой типизации - "недо"-языки.

Эт почему?

Потому, что никогда не понятно, "что же там должно вернуться". Девелопмент на ява-скрипте напоминает процесс отладки на яве. Запустили, дошли до брэйкпоинта, отрисовали переменную, посмотрели, что же там лежит. Пишем дальше. И так постоянно. Весьма утомляет.

Самый популярный аргумент не в пользу динамических языков:) Неизвестность типа данных возвращаемого значения - это проблема только черных ящиков. Если я написал:
Код:
def asdf
1
end

То я знаю, что метод asdf мне вернет Fixnum. Другое дело если я не вижу реализацию этого метода. Но такое случается и с статически типизированными языками, в той же Java метод с такой сигнатурой:
Код:
SomeClass asdf();
Может вернуть как экземпляр SomeClass, так и null, и с полной уверенностью делать так уже не получиться:
Код:
asdf().someClassMethod()

Может все упасть:)
Кстати, так как в Java есть еще и полиморфизм, то нам может вернуться еще и наследник класса SomeClass и перегруженный им метод someClassMethod сделает уже совсем не то, что ожидалось. Все не предугадаешь:)
Так что это достаточно сомнительный контраргумент.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А какой язык прог. вы считаете самым лучшим?
СообщениеДобавлено: 20 окт 2010, 20:23 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 27 янв 2010, 18:55
Сообщения: 163
Откуда: Томск
Мой самый любимый - Tcl.

Очень простой синтаксис. На нем удобно писать всякие тестовые скриптики и не только.

Например чтобы записать строчку в COM порт:
Код:
set fd [open /dev/ttyS0 r+]
fconfigure $fd -translation binary -mode 9600,n,8,1 -buffering none
puts -nonewline $fd {Some string}

красота по-моему :)

Еще при помощи пакета Tk (и Ttk) на нем очень просто состряпать GUI.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А какой язык прог. вы считаете самым лучшим?
СообщениеДобавлено: 20 окт 2010, 20:46 
Старожил
Аватара пользователя

Зарегистрирован: 03 сен 2010, 22:46
Сообщения: 6179
Откуда: Москва
iv_s писал(а):
Код:
SomeClass asdf();
Может вернуть как экземпляр SomeClass, так и null, и с полной уверенностью делать так уже не получиться:
Код:
asdf().someClassMethod()

Может все упасть:)

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А какой язык прог. вы считаете самым лучшим?
СообщениеДобавлено: 20 окт 2010, 21:19 
Старожил
Аватара пользователя

Зарегистрирован: 03 сен 2010, 22:46
Сообщения: 6179
Откуда: Москва
Самый весомый аргумент против языков с динамической типизацией - это очень существенная трата ресурсов, как аппаратных, так и, что самое неприятное, людских. То, что приносит пользу и облегчает работу в небольших проектах, в больших проектах со многими разработчиками становится постоянным источником головной боли. Там даже статические языки связывают большим количеством шаблонов, стандартов и ограничений.

А уж рефлективные языки в больших проектах - это вообще вилы.

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

Плюс неизбежные проблемы с производительностью.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А какой язык прог. вы считаете самым лучшим?
СообщениеДобавлено: 20 окт 2010, 21:55 
Заглядывает иногда

Зарегистрирован: 26 янв 2010, 21:54
Сообщения: 189
Откуда: Новосибирск
iv_s писал(а):
Неизвестность типа данных возвращаемого значения - это проблема только черных ящиков....
Другое дело если я не вижу реализацию этого метода.

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

iv_s писал(а):
Но такое случается и с статически типизированными языками, в той же Java метод с такой сигнатурой:
Код:
SomeClass asdf();
Может вернуть как экземпляр SomeClass, так и null, и с полной уверенностью делать так уже не получиться:
Код:
asdf().someClassMethod()

Может все упасть:)

Раньше возможность возврата null обычно описывали в джавадоке. Потом появились аннотации @Nullable и @NotNull, которые очень облегчают жизнь во время написания кода.
Кроме того, афаик, в 5ке появились конструкции
assert <condition> и
assert <condition> : <object>
которые в случае false генерят исключение, а во 2ом случае ещё и добавляет в ошибку object.toString().
А в 7ке проверка
if (asdf != null) {
asdf.someClassMethod()
}
будет делаться вообще очень просто: asdf?.someClassMethod()

iv_s писал(а):
Кстати, так как в Java есть еще и полиморфизм, то нам может вернуться еще и наследник класса SomeClass и перегруженный им метод someClassMethod сделает уже совсем не то, что ожидалось. Все не предугадаешь:)
Так что это достаточно сомнительный контраргумент.

Хосспади, так ведь в этом-то и вся прелесть, что нам до лампочки, что там за объект вернулся! Если у меня есть интерфейс Collection, то мне, например, важно знать кол-во элементов в этой коллекции и абсолютно не волнует, какая реализация метода size() вызовется - списка, набора или ещё чего, из чего на самом деле реализована эта коллекция.
Но всё же бывают случаи, когда нужно точно знать, что вернулось - для этого есть instanceof, возвращающий boolean.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А какой язык прог. вы считаете самым лучшим?
СообщениеДобавлено: 20 окт 2010, 22:57 
Заглядывает иногда

Зарегистрирован: 26 янв 2010, 21:54
Сообщения: 189
Откуда: Новосибирск
DI HALT писал(а):
Цитата:
Java, конечно же.
Более распространены различные ассемблеры и c/cpp, но они нифига не стандартизованы - т.е., везде разные и ни разу не переносимые.

А вот хер! Попробуй на Java написать под AVR или PIC Речь идет о МАКСИМАЛЬНО большом числе платформ.

А на AVR и PIC уже есть ява-машины? Тогда мы идём к вам. :)
Речь, если ты не помнишь, идёт вот об этом:
DI HALT писал(а):
лучший язык это тот который наиболее распространен и стандартизован на максимуме из имеющихся платформ

Ява - на данный момент РАСПРОСТРАНЁН и СТАНДАРТИЗОВАН (читать вместе и слитно) на максимуме из имеющихся платформ.
Асм - распространён везде, но абсолютно не стандартизован.
Си - имеет чуть меньшее распространение, чем асм, но сильно большее, чем ява, при этом есть аж 4 его стандарта (не считая 5 стандартов cpp и уймы их расширений), а, кроме того, даже в пределах одного стандарта, но под разными компиляторами порой требуется доработка кода напильником. Вспомни IAR, WinAVR и CodeVisionAVR. Сделать проект, компилируемый под всеми ими без единой переделки порой просто анрил. И это без операционки, на одном и том же кристалле. Так о какой стандартизации разговор? Ну нет стандарта Си для embedded систем, отсюда и грабли.
На яве же, если я где-то компилю приложение под java se, то этот же байт-код будет работать на любой платформе, где есть соответствующая jre (конечно, если не использует системных привязок в виде непереносимых библиотек - обычно это требуется только при общении с железом, для которого есть смысл выбирать только библиотеки с общим интерфейсом и реализациями под множество систем).

DI HALT писал(а):
Не стоит забывать и мелкие контроллеры. Я не знаю ни одного МК где бы не было Си компилятора.

Знакомься.

DI HALT писал(а):
Периферия это одно, алгоритмы другое. По хорошему между ними должен быть HAL.

В Яве он есть (см. те же j2me и android). В Дотнете - тоже есть, с натяжкой - там нет-нет, да и проскочит вызов системной библиотеки. В Си - только какие-то базовые вещи, характерные для большого брата.

DI HALT писал(а):
А вот любой алгоритм, да хоть той же сортировки, правильно (т.е. без привязке к аппаратуре) написаный на Си спокойно, копипастом, будет работать на любой платформе где Си есть.

Даже при 3х "действующих" стандартах языка?

DI HALT писал(а):
То же касается и любых других, более сложных вещей. Вроде TCPIP или FAT. Переписывается только HAL, а остальное кочует без изменений. В худшем случае надо будет типы данных переопределить если разрядность менялась. По хорошему же типы данных тоже индивидуально задаются, чтобы не было плаваний между разной длиной Int и прочих приколов разных разрядностей.

В яве на счёт этого голова вообще не болит.

DI HALT писал(а):
Я же спокойно, копипастом, таскаю свою диспетчерскую систему с AVR на С51 с С51 на ARM трех разных видов и код практически не правлю. Только HAL файлы. И у меня все работает.

И вот ведь какая штука - верю! :)

DI HALT писал(а):
Ассемблер же это не столько язык сколько образ мышления. Код на асме весьма быстро переписывается на любую архитектуру, но делать это надо вручную. И да, его надо знать. Чтобы жопой чуять узкие места в коде.

Это язык, просто у каждого - свой, хоть и похожий.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А какой язык прог. вы считаете самым лучшим?
СообщениеДобавлено: 20 окт 2010, 23:08 
Заглядывает иногда

Зарегистрирован: 26 янв 2010, 21:54
Сообщения: 189
Откуда: Новосибирск
Ink писал(а):
nathos писал(а):
Потому что всегда найдётся непереносимая библиотечка, соблазн воспользоваться которой у программиста будет велик настолько, что вопроса о переносимости не возникнет само собой.

имеет ли эта библиотека хоть какое-то отношение к си?;) КАША в голове!

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

Ink писал(а):
вы мне факты, факты приводите. возьмите современные оси и покажите, какие из них полностью написаны на асме.

GCC AvrX, к примеру.

Ink писал(а):
а где вообще есть HAL? в смысле, в каком ЯП?

Ява, дотнет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А какой язык прог. вы считаете самым лучшим?
СообщениеДобавлено: 20 окт 2010, 23:48 
Старожил

Зарегистрирован: 27 янв 2010, 09:59
Сообщения: 321
Откуда: Нижнекамск (Татарстан)
самый лучший язык тот на котором тебе комфортно писать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А какой язык прог. вы считаете самым лучшим?
СообщениеДобавлено: 20 окт 2010, 23:55 
Старожил
Аватара пользователя

Зарегистрирован: 26 янв 2010, 21:55
Сообщения: 5672
Откуда: Уругвайская АССР
DI HALT писал(а):
Не стоит забывать и мелкие контроллеры. Я не знаю ни одного МК где бы не было Си компилятора.
nathos писал(а):
ЕМНИП, an15e03, он же КР1878ВЕ1 - тоже без сей и микропаскалей.

_________________
Без гнева и жестокости, сегодня Смерть взмахнёт косой, и ангел тайными дорогами мой милый Кубик унесёт с собой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А какой язык прог. вы считаете самым лучшим?
СообщениеДобавлено: 21 окт 2010, 00:23 
Заглядывает иногда

Зарегистрирован: 26 янв 2010, 22:01
Сообщения: 33
Откуда: Санкт-Петербург
Pascal - вот самый лучший язык! Безоговорочно! :)

_________________
Я бы в паровозники пошёл - пусть меня научат!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А какой язык прог. вы считаете самым лучшим?
СообщениеДобавлено: 21 окт 2010, 00:42 
Старожил
Аватара пользователя

Зарегистрирован: 20 авг 2010, 14:14
Сообщения: 1616
Откуда: Рэшен Федерэшн
Deer писал(а):
Pascal - вот самый лучший язык! Безоговорочно! :)

А ИДЕ Дельфы седьмой версии - образец для подражания :))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А какой язык прог. вы считаете самым лучшим?
СообщениеДобавлено: 21 окт 2010, 06:44 
Старожил

Зарегистрирован: 06 фев 2010, 17:22
Сообщения: 1557
Откуда: Иркутск
akatenev писал(а):
iv_s писал(а):
Код:
SomeClass asdf();
Может вернуть как экземпляр SomeClass, так и null, и с полной уверенностью делать так уже не получиться:
Код:
asdf().someClassMethod()

Может все упасть:)

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


nathos писал(а):
iv_s писал(а):
Неизвестность типа данных возвращаемого значения - это проблема только черных ящиков....
Другое дело если я не вижу реализацию этого метода.

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

iv_s писал(а):
Но такое случается и с статически типизированными языками, в той же Java метод с такой сигнатурой:
Код:
SomeClass asdf();
Может вернуть как экземпляр SomeClass, так и null, и с полной уверенностью делать так уже не получиться:
Код:
asdf().someClassMethod()

Может все упасть:)

Раньше возможность возврата null обычно описывали в джавадоке. Потом появились аннотации @Nullable и @NotNull, которые очень облегчают жизнь во время написания кода.
Кроме того, афаик, в 5ке появились конструкции
assert <condition> и
assert <condition> : <object>
которые в случае false генерят исключение, а во 2ом случае ещё и добавляет в ошибку object.toString().
А в 7ке проверка
if (asdf != null) {
asdf.someClassMethod()
}
будет делаться вообще очень просто: asdf?.someClassMethod()
[/code]


Используя те же самые инструменты в динамических языка проверяется тип данных. То есть идентично:
Код:
try {
  SomeClass someClass = asdf();
  if(someClass instanceof SomeClassChild) {
    throw new Exception("Oops, wrong class!");
  }
  someClass.someClassMethod();
} catch(Exception e) {
   System.out.print(e.getMessage());
}

и
Код:
begin
  res = asdf();
  raise "wrong class" if res.class != SomeClass
  res.some_method
rescue => e
   puts e
end

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

nathos писал(а):
iv_s писал(а):
Кстати, так как в Java есть еще и полиморфизм, то нам может вернуться еще и наследник класса SomeClass и перегруженный им метод someClassMethod сделает уже совсем не то, что ожидалось. Все не предугадаешь:)
Так что это достаточно сомнительный контраргумент.

Хосспади, так ведь в этом-то и вся прелесть, что нам до лампочки, что там за объект вернулся! Если у меня есть интерфейс Collection, то мне, например, важно знать кол-во элементов в этой коллекции и абсолютно не волнует, какая реализация метода size() вызовется - списка, набора или ещё чего, из чего на самом деле реализована эта коллекция.
Но всё же бывают случаи, когда нужно точно знать, что вернулось - для этого есть instanceof, возвращающий boolean.



Даже если он такой?:)
Код:
public int size() {
  System.exit(1);
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А какой язык прог. вы считаете самым лучшим?
СообщениеДобавлено: 21 окт 2010, 06:56 
Старожил

Зарегистрирован: 06 фев 2010, 17:22
Сообщения: 1557
Откуда: Иркутск
akatenev писал(а):
Самый весомый аргумент против языков с динамической типизацией - это очень существенная трата ресурсов, как аппаратных, так и, что самое неприятное, людских. То, что приносит пользу и облегчает работу в небольших проектах, в больших проектах со многими разработчиками становится постоянным источником головной боли. Там даже статические языки связывают большим количеством шаблонов, стандартов и ограничений.

А уж рефлективные языки в больших проектах - это вообще вилы.

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

Плюс неизбежные проблемы с производительностью.

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

Ну вот твиттер например. Не маленький ведь проект, а на RoR сделан(правда теперь они вроде критические участки на Scala переписывают:)) Или же все поделки Ruby евангелистов из 37signals.
Корпоративные стандарты кодирования и документации - и не будет никаких проблем, вызванных динамической типизацией.

И опять про производительность:) Если производительность - ключевой момент, тогда конечно, какой Ruby, C/C++, практически без вариантов. Если памяти много, то уже можно Java/C#. Если не ошибаюсь, писали, что почти все вычисления на БАК - это Java.
В других же случаях, вполне можно выбрать динамический язык. Вон PHP - динамический ведь, а на нем куча высоконагруженных проектов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А какой язык прог. вы считаете самым лучшим?
СообщениеДобавлено: 21 окт 2010, 11:53 
Старожил

Зарегистрирован: 22 мар 2010, 22:54
Сообщения: 3995
nathos писал(а):
Даже при 3х "действующих" стандартах языка?
ЛЕГКО!
nathos писал(а):
Знакомься.
и что это за унылое говно мамонта? сейчас каждый может на плис создать свой процессор и НЕ написать к нему компилятор си. какого года эти контроллеры? кто и где их СЕЙЧАС использует? какой вообще процент контроллеров без си-компилятора?
nathos писал(а):
Асм - распространён везде
ясно понятно что асм есть везде. еще везде есть машинный код. абсолютно. но на сколько я понимаю, в теме идет речь не о существовании языков ВААЩЕ, а о применимости в жизни. асм здесь в пролете в ембеддед системах!
nathos писал(а):
Сделать проект, компилируемый под всеми ими без единой переделки порой просто анрил. И это без операционки, на одном и том же кристалле.
если тебе анрил, это не значит что вообще анрил. лично мне это ЛЕГКО и не доставит никаких больших проблем. да и примеров существует ВАГОН, когда проекты компилятся разными компиляторами, без какого-либо вмешательства в код.
nathos писал(а):
На яве же, если я где-то компилю приложение под java se, то этот же байт-код будет работать на любой платформе, где есть соответствующая jre (конечно, если не использует системных привязок в виде непереносимых библиотек
ха! а ты же сам кричал, что у си - это проблема, что нет везде нужных либ и хрен что перенесешь. т.е. такая шняга от языка не зависит, везде можно написать херню.
nathos писал(а):
GCC AvrX, к примеру.
опять говно мамонта? и только под авр... очень достойный пример! таких говноподелок - миллионы (а у меня есть своя! но не стоит этим гордиться!), как и любимая вами менует. а вы посмотрите на оси типа FreeRTOS, scmrtos, uC/OS-II и т.п. да даже линукс возьмите, который куда тока не портирован. это НАМНОГО более серьезные и более распространенные вещи и асма там практически нет!
вы еще 70х годов пример приведите...
nathos писал(а):
Ява, дотнет.
там что, есть классы для работы с SPI? или есть классы для работы с SD-картой? с цап? с акселерометрами? или для работы с интерфейсом i2c, can, usb, езернет? или о каком, блджад, HAL мы говорим???
Горнист писал(а):
КР1878ВЕ1 - тоже без сей и микропаскалей.
и тоже говно мамонта, никому не упершееся:)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 90 ]  На страницу Пред.  1, 2, 3, 4  След.


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB