Перейти к содержанию
    

4 часа назад, AlexandrY сказал:

Phyton просёк спрос на либы гораздо более мощные чем у C++,  и тож занял большую нишу у низкобюджетных  программеров  под PC. 

Вообще-то Питон (Python), а не Фитон (Phyton) :), но это типичная опечатка, к которой придираться не стоит. А вот о библиотеках функций действительно стоит поговорить.

 

Скажем, для C/C++ существует астрономическое количество библиотек, но ... их в стандарт не пускают. Тем самым достигается формальная "стабильность" языка за счет спартанского набора функций, замороженных еще в прошлом веке. Вот только что в конце прошлого гола вышла новая "Microsoft Visual Studio 2019", которая на платформе x86 задает моду по части языков. Число функций там пальцем не считала, но размер include-директория снова уменьшился - новых функций не появилось, а некоторые даже исчезли. А в области микроконтроллеров и вовсе абсурдная ситуация - люди на форумах всей гурьбой сочиняют функцию atoi(), для превращения бинарных чисел в текстовый вид. И всё только потому, что стандарт языка не оставляет иных возможностей совершить такое превращением, кроме как с помощью (s)printf(). Тогда как у большинства разработчиков компиляторов представление о стандарте таково, что "нестандартные" функции в языке недопустимы. Это сейчас эпопея с atoi() выглядит смешной на фоне расширения у МК памяти и увеличения их тактовой частоты. Но во времена, когда объем памяти МК был невелик, (s)printf() была неподъемной, как из-за большого размера библиотечного кода, так и из-за своей медлительности вследствие синтаксического разбора форматной строки в реальном времени. В итоге имеем ситуацию, когда разработчики языка и/или его стандарта переложили заботу о функциях на потребителя, уйдя от неблагодарной работы по стандартизации библиотек. Поэтому и, вводя новые стандарты (C++11, C++14 и т.п.), ковыряют синтаксис языка, но библиотеки не трогают.

 

Но это только одна сторона медали, но есть и другая. Стоит только позволить библиотечным функциям размножаться, как язык сразу же "поплывет", т.к. при отсутствии стандартизации библиотечных функций программа перестает быть переносимой, а то и даже читаемой из обилия функций неясного назначения. Эта проблема напрямую касается и составителей библиотек, т.к. при их написании почти всё приходится писать с нуля, чтобы обеспечить независимость от других библиотек, которые тоже могут неожиданно "поплыть". Короче говоря, палка здесь о двух концах: нос вытащишь - хвост увязнет. А компромисс здесь достигается в зависимости от эффективности языка (для процессора, а не для программиста!) - малоэффективные, тяготеющие к интепретаторам (и Питон в их числе) развиваются в сторону роста библиотек, стараясь компенсировать неэффективность исполняемого кода за счет библиотек готовых функций, ранее уже скомпилированных и, как правило, написанных на эффективных языках типа C, а то и ассемблере.

 

Что касается языка Rust, то "хилость" библиотек я бы ему в вину не ставила, поскольку Rust по своей природе относится к эффективным языкам. Кстати, рождающихся в наше время крайне редко,  т.к. ныне акценты сильно смещены в сторону "удобства программирования", тогда как эффективность кода приносится ему в жертву. А библиотеки - дело наживное. Несмотря на мое первое полемическое выступление, которое можно расценить, как антирустовское :), я успела отметить (но не высказать вслух) позитивные качества этого языка. В первую очередь,  понравился правильный (на мой взгляд) подход к безопасности, когда все проверки (аки верификация) приходятся на этап компиляции, а не выносятся в runtime. Ради этой цели и в самом деле можно пойти на еще большую подробность описания объектов с явным указанием того, что с этими объектами можно делать, а чего делать нельзя. Чтобы компилятор более детально мог следить за теми операциями, которые с ними производятся, выдавая в скользких случаях соответствующие варнинги. В силу своей эффективности, Rust вполне может быть использован в сфере создания программ для микроконтроллеров, поскольку не нагружает исполняемый код  параноидальными проверками типа "не изменила ли переменная цикла своего типа за время его последнего оборота, можно ее инкрементировать на единицу?" :).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Критерии нормальности просты: человеческий синтаксис (пхытон этим не отличается, там логика зависит от того, как вы отступ сделаете! Вообще наркомания какая-то!), возможность собрать бинарник (а не запускать каждый раз интерпретатор), универсальность (хоть пхытон тоже пытаются на МК засунуть, но таки С пока везде впереди), наличие большого количества библиотек (на каком еще языке, кроме С, я смогу под ПК что угодно написать?).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 минуты назад, Eddy_Em сказал:

Критерии нормальности просты: человеческий синтаксис

Это вот это:

 

int *(*(*p)[])(double *p);

 

нормальный человеческий синтаксис?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 минут назад, Eddy_Em сказал:

Критерии нормальности просты: 

Тогда чем bash настолько лучше Python?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 минут назад, Eddy_Em сказал:

возможность собрать бинарник (а не запускать каждый раз интерпретатор)

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 минут назад, Eddy_Em сказал:

на каком еще языке, кроме С, я смогу под ПК что угодно написать?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 минут назад, Eddy_Em сказал:

универсальность (хоть пхытон тоже пытаются на МК засунуть, но таки С пока везде впереди)

Дадада, напишите на С что-нибудь для веба

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 minutes ago, dxp said:

вот это: int *(*(*p)[])(double *p); нормальный человеческий синтаксис?

Да, потому что совершенно все прозрачно. Намного приятней, чем всякие ::->

13 minutes ago, Grizzly said:

чем bash настолько лучше Python?

Тем, что для баша не нужно 100500 библиотек и нет проблем с версионированием, как у питона. Баш-скрипт, написанный 20 лет назад, работает у меня и сейчас. А вот питон этим похвастать не может. С С, кстати, то же самое: старый код легко собрать современным компилятором.

14 minutes ago, dxp said:

Запускать интерпретатор, не пересобирая каждый раз проект

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

14 minutes ago, Grizzly said:

На любом, который вы знаете.

Нет. Т.к., скажем, на фортране я не смогу написать иксовое приложение. Все упирается в наличие библиотек. А подавляющее большинство библиотек - для С/С++!

15 minutes ago, dxp said:

напишите на С что-нибудь для веба

Уже почти 10 лет успешно пишу. Можете у меня на гитхабе посмотреть. В чем проблема-то написать для веба? Это намного проще, чем под микроконтроллеры!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, Eddy_Em сказал:

Да, потому что совершенно все прозрачно. Намного приятней, чем всякие ::->

О, похоже, наконец мы нашли живого ценителя языков стиля brainfuck.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 1/25/2020 at 11:20 PM, Максим Лапшин said:

Если интересно — могу поделиться опытом нашей разработки под stm32

 

Вас надо с Чёблином познакомить на easyelectronics.ru :) Он тоже ратует за Rust.  Если конечно же это не вы :) Вот одна из его тем: http://forum.easyelectronics.ru/viewtopic.php?f=32&t=41874

 

Что касается Rust'а, то моя точка зрения совпадает с т.з. Xenia

 

Нужен доступ в нижний уровень, нужны указатели, а с организацией данных, освобождением кучи мы как-нибудь сами разберёмся.  И stdlib нужен.  Хотя бы для sprintf всяких чтобы склеивать строки в памяти.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, dxp сказал:

О, похоже, наконец мы нашли живого ценителя языков стиля brainfuck.

Я тоже ценитель, если что:biggrin:

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 минуты назад, Arlleex сказал:

Я тоже ценитель, если что:biggrin:

Но не будете же при этом утверждать, что это "нормальный человеческий синтаксис"? Особенно по сравнению с синтаксисом высокоуровненвых ЯП вроде питона. Не, я тоже достаточно легко читаю и пишу подобные выражения (хотя на практике предпочитаю разбивать на части с помощью псевдонимов, чтобы код был не только write-only), но за этим стоит приличная практика, и поначалу приходилось ломать мозги, чтобы подобное хотя бы читать. Посему подобные нагромождения скобок и звёздочек не могу признать ни человеческими, ни нормальными. 

 

Код на ЯП с нормальным человеческим синтаксисом читается с ходу, практически без подготовки - как, например, на питоне. Кстати, наш любитель си почему-то не брезгует пользоваться октавой, а ведь это язык по сути такой же как питон или матлабовский скрипт. Та же философия, те же способы достижения эффективности как по скриптованию, так и по скорости выполнения. Поэтому его нападки на тот же питон не логичны и объясняются только тем, что он не знаком с ЯП питон от слова совсем. И единственное, что во всём этом я пока не понимаю: он тролль или просто подросток-максималист в теле взрослого дяди. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, Xenia said:

А в области микроконтроллеров и вовсе абсурдная ситуация - люди на форумах всей гурьбой сочиняют функцию atoi(), для превращения бинарных чисел в текстовый вид

В MSP430 нет аппаратного деления. Поэтому и пришлось писать свой atoi :)

2 hours ago, Xenia said:

тогда как эффективность кода приносится ему в жертву

Больше похоже на "индусский стиль" программирования. Когда оплата идет за объем, ибо нет единого критерия монетизации эффективности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, Xenia said:

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

Rust  между тем оснащен новыми средствами "стабилизации" способными фиксировать снимок либ. 
В IDE для C-и до такого еще не додумались.  
Библиотечная лава будет только расти. От этого никому никуда не деться. 
Буквально сейчас я обновил либы фреймворка  для стабильнейшей RTOS ThreadX и у меня отвалился USB стек. 
Стабильность стала всеобщей проблемой. 
Багаж библиотек для C и С++ в основной массе морально устарел.
Смотрел недавно что может пригодится из Boost-а. Одна труха. 
Может что-то по мат.вычислениям сгодилось бы, но их теперь можно сгенерить в Matlab-е проще и быстрее.  

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

51 minutes ago, dxp said:

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

Чушь-то какая! Питон - это наркоманский синтаксис, без укурки никак не разберешься!

51 minutes ago, dxp said:

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

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

52 minutes ago, dxp said:

не знаком с ЯП питон от слова совсем

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

2 minutes ago, AlexandrY said:

Багаж библиотек для C и С++ в основной массе морально устарел.

бугогашеньки! Вы загляните между делом в /usr/lib и найдите там хотя бы полпроцента несишных библиотек! И кто все это будет под хипстерские недоязычки переписывать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

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

×
×
  • Создать...