C# с которым ты носишься:
-- появился после питона, когда ниша скриптов уже была занята
-- еще несколько лет назад был Windows-only, когда ниша ML уже была занята
-- не предназначен для repl-a
-- не имеет продвинутых штук типа jupyter,
-- если использовать dynamic, ты занимаешься сексом в гамаке: все проблемы статики(тяжелое IDE, куча файлов и опций для сборки и т.д.), но не получаешь удовольствий (intellisense, compile time error checking)
-- если не использовать dynamic, то разработка сильно замедляется: нет repl-a, a есть куча лишних движений и суеты (типы, сборка, проекты, IDE и т.д.)
Здравствуйте, novitk, Вы писали:
N>Здравствуйте, okon, Вы писали:
N>C# с которым ты носишься:
Совершенно не принципиально пусь будет C, а не C#.
N>-- появился после питона, когда ниша скриптов уже была занята N>-- еще несколько лет назад был Windows-only, когда ниша ML уже была занята
Windows-only ты говоришь про компилятор который был.
Но синтаксис как был так и остался, и как видишь тот же самый синтаксис можно вертеть как угодно — Windows-only, или кросс-платформ.
N>-- не предназначен для repl-a
Это опять же реализация тулзы , она не имеет отношения к синтаксису. Что мешает a = a + 2 выполнить как в питоновском синтаксисе так и в шарповом.
Зависит от того сделаешь ты repl или нет для языка. Вот в студии сделали например панельку там тебе Repl для шарпа.
N>-- не имеет продвинутых штук типа jupyter,
что за продвинутая штука ? https://jupyter.org/ ? эта штука вроде как 40 языков поддерживает в том числе C#.
опять же причем тут синтаксис, от того что вместо пробелов ты поставишь скобки { } или другие отличия синтаксиса такую тулзу будет не возможно сделать ?
N>-- если использовать dynamic, ты занимаешься сексом в гамаке: все проблемы статики(тяжелое IDE, куча файлов и опций для сборки и т.д.), но не получаешь удовольствий (intellisense, compile time error checking)
Почему не получу — вопрос такой же как и все выше — причем тут синтаксис.
N>-- если не использовать dynamic, то разработка сильно замедляется: нет repl-a, a есть куча лишних движений и суеты (типы, сборка, проекты, IDE и т.д.)
Это все опять про тулзы а мы про то зачем надо было новый синтаксис воротить для всего этого.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, _ABC_, Вы писали:
_AB>Здравствуйте, Kolesiki, Вы писали:
K>>а ниша C++/C# доставалась бы им _AB>С придумали дилетанты, чтобы не писать на ассемблере. _AB>А С# вообще супер-дилетанты придумали, чтобы не писать на С++.
Путаешь, С и ассемблер это разные уровни абстракции.
С, C#, C++, Python это один и тот же уровень абстракции, те же if/for/ из которых ты рисуешь нужный алгоритм.
Причем С# можно сказать что подмножество С++ , с наложенными ограничениями, например нельзя писать Type* и т.п., а так синтаксис сохранен.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, okon, Вы писали:
O>С, C#, C++, Python это один и тот же уровень абстракции, те же if/for/ из которых ты рисуешь нужный алгоритм. O>Причем С# можно сказать что подмножество С++ , с наложенными ограничениями, например нельзя писать Type* и т.п., а так синтаксис сохранен.
C# и C++ сильно разные. Иногда похожи, как например тут, но множества просто пересекаются. Type* в C# написать тоже можно, если Type — это value-тип. Просто в C++ все типы такие, так что Type может быть чем угодно, а в C# не все.
Если натягивать сову, C# можно назвать надмножеством C. Надмножество того же размера, что и C++, но другое. Так сходу не приходит в голову ничего, что есть в С, чего не было бы в C#. Макросы разве что. Хотя про C у меня уже обрывочные воспоминания.
Здравствуйте, okon, Вы писали:
O>С, C#, C++, Python это один и тот же уровень абстракции, те же if/for/ из которых ты рисуешь нужный алгоритм.
Так зачем нужны ++ и #, если есть "голый" С?
Плодите сущности без необходимости.
O>Причем С# можно сказать что подмножество С++ , с наложенными ограничениями, например нельзя писать Type* и т.п., а так синтаксис сохранен.
Зачем? Это же дилетанство.
Здравствуйте, okon, Вы писали:
O>Так синтаксис C# не сложнее, тем более вот это форматирование пробелами в питоне — чисто технарская фигня, еще надо понимать чем пробел от табуляции отличается, другое дело Begin End или { } там все видно нормально и без разницы сколько пробелов, многие не технари физики, математики , когда пишут код для своих вычислительных задач часто это форматирование для них на последнем месте и питон тут как кость в горле со своими отступами.
Пару слов за скобки.
Размышлял почему в си-подобных языках можно опускать скобки в случае единственного оператора и пришел
к выводу что отступный стиль строже. Нельзя по ошибке забыть поставить оступ.
В общем и целом, если не нужна суперпроизводительность, то главный критерий — корректность кода,
и язык с отступами помогает более ясно оформить логику.
Такой вывод я сделал на основании использования C#, F# и Nemerle.
Здравствуйте, okon, Вы писали:
O>Мешает тем что это еще одно слово, лишняя сущность в виде Python она увеличивает энтропию, должно быть основание.
Так можно просто его не использовать, ничего про него не читать и даже вопросы на форумах не задавать.
Если серьезно, то основание простое: потому что язык простой, удобный и к нему есть куча батареек. Я тоже раньше скептически к нему относился, но попробовал и мне все понравилось. На любой чих есть библиотека, если вдруг нет, то есть развитый ffi. Сам язык логичный (за исключение пары моментов) и какой-то, как бы сказать, "воздушный" -- на нем легко пишется.
Здравствуйте, okon, Вы писали: O>многие не технари физики, математики , когда пишут код для своих вычислительных задач часто это форматирование для них на последнем месте и питон тут как кость в горле со своими отступами
Может просто есть такие "технари физики, математики", которые oсиливают настроить редактор?
Здравствуйте, okon, Вы писали:
O>Почему не дали ему спокойно умереть ? O>Взяли бы для кросс-платформенности любой активный и живой язык C++/C#/Java например ? Зачем плодить сущности которые делают тоже самое ?
Если по существу, ты сам себе противоречишь. Питону может и можно было позволить умереть, но вот Java и тем более C# как раз "наплодившиеся сущности", т.к. появились после появления Питона. Из твоего списка Питон новaя сущность только по отношению к С++. Вот с С++ и сравнивай. Например, Питон образца 98 года и С++98. Вперед.
Здравствуйте, varenikAA, Вы писали:
AA>Пару слов за скобки.
ПРО скобки, это не украинский.
AA>... отступный стиль строже. Нельзя по ошибке забыть поставить оступ.
А кто вообще сказал, что человек будет ставить отступ?? Полно в коде вещей типа
if (a) { smth(); return; }
Здесь второстепенная логика выражена одной строкой, чтобы не замусоривать экран. Пестонить этот оператор в 3 строки — кощунство.
Ну и кроме того, в эпоху Web'а, когда код копипастится в полный рост, просто глупо и опасно иметь отступы, ибо они копируются из браузера чёрте как — всё зависит от левой пятки дизайнера. Веб — ему вообще пофиг ваши отступы, он все их видит как одно. Не говоря о том, что иногда нужно переносить куски кода с "незавершённым синтаксисом". Колупаться в твоих пробелах — мне больше заняться нечем?? Просто пастишь C#'овые строчки, где надо — дополнил скобками. Всё. Надёжно как перфокарта.
Мне даже вопросов задавать не надо человеку, пишущему на Пестоне — там диагноз однозначен.
Здравствуйте, student__, Вы писали:
__> C# как раз "наплодившиеся сущности", т.к. появились после появления Питона
Ну а ты родился после Энштейна. Значит ты тоже того... неудачная сущность?
Пестон — плод больного воображения диктаторского типа, рождён ОДНИМ ЧЕЛОВЕКОМ.
C# — пусть и "переименованная Жаба", но туда вложились СОТНИ инженеров на коммерческой основе, имеющих опыт создания С++ и Васика.
Думаю, не надо объяснять, какой язык спроектирован более грамотно?
Здравствуйте, Kolesiki, Вы писали: K>Ну а ты родился после Энштейна. Значит ты тоже того... неудачная сущность?
Неудачная? Кто сказал "неудачная"? K>Пестон — плод больного воображения диктаторского типа, рождён ОДНИМ ЧЕЛОВЕКОМ.
Троллишь что ли? С такими мыслями лучше в раздел "Политика", там больше оценят. K>C# — пусть и "переименованная Жаба", но туда вложились СОТНИ инженеров на коммерческой основе, имеющих опыт создания С++ и Васика.
Да хоть миллион. Linux вообще как студенческий эксперимент начинался. Но это не мешает сейчас работать над ним сотням инженеров на такой же коммерческой основе. K>Думаю, не надо объяснять, какой язык спроектирован более грамотно?
Объясни сначала, что такое "грамотно спроектированный".
Предположим, мне в debug-ере надо поставить точку останова (breakpoint)
на вызов:
smth();
Как быть в этом случае?
P.S. если я распишу твоё выражение так:
if (a)
{
smth();
return;
}
Оно не займет намного больше места в файле (тем более, что теперь хранение информации — очень дешовое),
но станет намного читабельнее и удобнее при отладке.
Здравствуйте, AlexGin, Вы писали:
AG>Здравствуйте, Kolesiki, Вы писали: AG>...
K>>
K>>if (a) { smth(); return; }
K>>
AG>А отлаживать-то как будешь?
Я вам открою большую тайну. Ставишь курсор на нужную точку и выбираешь из попапа Insert Breakpoint. Очень помогает когда надо простую пропертю отдебажить.
Здравствуйте, Danchik, Вы писали:
D>Я вам открою большую тайну.
Ставишь курсор на нужную точку и выбираешь из попапа Insert Breakpoint. Очень помогает когда надо простую пропертю отдебажить.
Для начала — встречный вопрос:
В какой IDE это есть?
Если речь об MSVC — то да, там такое имеется. Я в курсе (и уже не первый год).
А если я делаю кросс-платформенное приложение и работаю не только в MSVC, но и в QtCreator?
И отладка в ОС Linux — окажется невозможной, так как там MSVC не работает...
P.S. Ограничивать себя приёмами работы, которые поддерживаются какой-либо одной средой разработки — плохо просто ужасно
Здравствуйте, Kolesiki, Вы писали:
K>Здравствуйте, varenikAA, Вы писали:
AA>>Пару слов за скобки.
K>ПРО скобки, это не украинский.
AA>>... отступный стиль строже. Нельзя по ошибке забыть поставить оступ.
K>А кто вообще сказал, что человек будет ставить отступ?? Полно в коде вещей типа
K>
K>if (a) { smth(); return; }
K>
K>Здесь второстепенная логика выражена одной строкой, чтобы не замусоривать экран. Пестонить этот оператор в 3 строки — кощунство.
Зависит от кодегайда принятого в команде.
K>Ну и кроме того, в эпоху Web'а, когда код копипастится в полный рост, просто глупо и опасно иметь отступы, ибо они копируются из браузера чёрте как — всё зависит от левой пятки дизайнера. Веб — ему вообще пофиг ваши отступы, он все их видит как одно. Не говоря о том, что иногда нужно переносить куски кода с "незавершённым синтаксисом". Колупаться в твоих пробелах — мне больше заняться нечем?? Просто пастишь C#'овые строчки, где надо — дополнил скобками. Всё. Надёжно как перфокарта.
Возможно...
K>Мне даже вопросов задавать не надо человеку, пишущему на Пестоне — там диагноз однозначен.
На питоне не пишу, синтаксис не очень нравится(подчеркивания, двоеточия). А вот F# самое-то в плане отступного синтакса:
module TimerExtensions =
type System.Timers.Timer with
static member StartWithDisposable interval handler =
let timer = new System.Timers.Timer(interval)
do timer.Elapsed.Add handler
timer.Start()
{ new System.IDisposable with
member disp.Dispose() =
do timer.Stop()
do printfn "Timer stopped"
}
Как видишь скобки используются но для другого, лепить все в одну строку тоже не йас как правило.
Здравствуйте, okon, Вы писали:
O>Почему не дали ему спокойно умереть ? O>Взяли бы для кросс-платформенности любой активный и живой язык C++/C#/Java например ? Зачем плодить сущности которые делают тоже самое ?
Дело не в кроссплатформенности, а в разделении труда и вытекающей из этого разницы в квалификации.
В МЛ пишутся два вида вещей — интеграция, и числодробилки. Числодробилки и так пишутся на Си/С++ и в принципе на чем угодно.
А вот интерграция требует ничтожной сложности со стороны ЯП. На эту роль не годится ни один из языков выше, т.к. их учить нужно слишком долго.
Здравствуйте, Sharov, Вы писали:
S>В ML пришло много нетехнарей, которым по сути надо fit\predict без особых сложностей. Также питон очень прост для экспериментов. Вот и взлетело.
Был тот же самый TCL — кроссплафторменный, дефолтный для многих дистрибутивов Linux. Почему не он?
Здравствуйте, scf, Вы писали:
scf>Не то же самое. Вот чем уникален питон:
Хммм, давайте сравнивать.
scf>- Динамическая типизация. Если надо распарсить json и извлечь из него даные — идеальный язык, т.к. не надо объявлять все типы и обвешиваться кастами.
TCL — аналогчино.
scf>- Легковесность. Скрипт на питоне стартует мнгновенно, потребляет мало памяти и быстро завершается.
TCL — аналогчино. Хотя "мало памяти и быстро завершается" — это ооооочень субъективно, для всех скриптовых языков (даже если брать во внимание всякие PyPy и т.п.). Сильно зависит от задачи.
scf>- Запуск исходного кода. Скрипты на питоне всегда можно открыть и пофиксить. Для переноса скрипта на другую машину достаточно скопировать исходник.
TCL — аналогчино.
scf>- Распространенность. Есть на любой никсовой системе.
TCL — аналогчино. И часто сразу предустановлен в дистрибутиве. Питон удостоился такой чести заметно позже.
scf>- Библиотеки, заточенные на выполнение типичных админских задач в одну строчку кода.
TCL — аналогчино. Тоже динамически типизирован, и готовых либ для него много. Само собой, есть и "package require json" для первого пункта.
scf>Любому программисту, имеющему дело с линуксом, питон будет очень полезен.
TCL — аналогчино.
Итого, какой вывод? Популярность языка — это 80% усилия по его насаждению, и 20% его замечательные свойства