| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Религиозные войны > перспективный язык "надежного программирования" |
| Автор: Nemo2007 17.10.2015, 20:40 |
| Подскажите... Я, немолодой уже инженер, которому время от времени приходиться писать программы. По работе или под заказ, но не часто. Так что я не программист в том смысле, что не программирую каждый день и не работаю на фирме создающей программы. Пользуюсь Delphi , последний раз использовал Lazarus (очень понравилось как для бесплатного продукта). Знаю более -менее и использовал всякие Басики и С... Ну не люблю я С... Посоветуйте для изучения в плане саморазвития и повышения конкурентноспособности А то с с Паскалем ощущать начинаю себя монстром замшелым. Желательно зрелый язык (зрелый в смысле наличия среды разработки, переносимости по платформам, наличию библиотек и т.д. , но есть ли такой?), можно новый, но перспективный. Правильное и надежное прграммирование - в кавычках, т.к. тут могут быть разные вариации, но в целом, наверное, понято всем, что язык у которого А=В означает присваивание значения или приравнивание ссылки на объект в зависимоси от того какое значение было присвоено переменной В 200 строк кода тому назад при переходе по 10 если - это не очень "надежное программирование". Особенно при сопровождении кода через пол года или 3 года после завершения разработки такого участка программы. |
| Автор: Cheloveck 17.10.2015, 21:02 |
| Писать плохой код можно на любом языке. Так что опеределение "надёжного" программирования я так и не понял. Язык, обычно, выбирают от задачи, которую пытаются решать. Из наиболее распространённых на сегодня языков общего назначения можно назвать следующие: C++, C#, Java, Python. Я бы посоветовал Python. У него есть бидндинги к Qt, GTK+ и wxWidgets, при этом он гораздо проще, чем C++. И с кроссплатформенностью у него лучше, чем у некоторых... |
| Автор: Sun 18.10.2015, 10:41 |
| После Дельфи вам будет непросто перестроится. Если вы планируете делать время от времени халтурки, которые будут работать на Windows, то вам ближе всего станет C#. Он впитал в себя компонентную модель Delphi а среда разработки будет вам во многом понятна. Также С# позволит сделать быстрый старт, не сильно углубляясь в дебри. Но если речь идет и кроссплатформенности и конкурентности на рынке, тогда безусловно стоит выбирать Питон. В отличие от Java, он также может дать быстрый старт, при том что на рынке сейчас дефицит Питон программистов и на него существует большой спрос. Но есть один недостаток - это скриптовый язык, который как многие другие языки стал сейчас модным, за счет использования крупными корпорациями, наподобие Google. Но как и всё модное, он может просто выйти из моды. Поэтому, если хотите действительно чего-то основательного, тогда стоит выбирать Java. Она настолько прочно вошла в мир информационных технологий, что на нее уже не влияют модные течения. И что самое прекрасное в Java - это совместимость между версиями. Код который вы писали 10 лет назад можно спокойно запустить даже сегодня, и даже без перекомпиляции. Это уникальный, в своем роде язык. Ни одна другая технология не смогла достичь таких высот. |
| Автор: Romikgy 18.10.2015, 11:42 |
| ИМХО, ява - язык корпоративных вещей... в обычных программах он крайне редко встречается, по минимуму в сегменте СНГ...или мне не попадается)) а вот в направлении Андроида ... это само оно) про Win и Delphi , можно еще предложить (по dot Net ) Delphi.Net ... тот же C# , но с синтаксисом от дельфей/паскаля... а вообще все зависит от задачи.... я видел продукты , которые делают обработку бинарных файлов, и написаны были на PHP ! просто человек , который писал сей продукт больше ничего не знал... написать можно на чем угодно , но сколько сил и времени уйдет ... будет разным на разных языках! |
| Автор: LSD 19.10.2015, 18:03 |
| (учи (лисп (это весело))) |
| Автор: Sun 19.10.2015, 22:36 | ||
А мужики то не знают! Питон дает компактный и понятный код и обладает широкими возможностями, благодаря чему стал крайне популярен. Стоит вам только засветить в резюме, что у вас был опыт с Питоном, HR-ы вам проходу давать не будут А типизация и все прочее - фигня это всё. Надо прагматически подходить. Если спрос есть - значит оно чего-то стоит. |
| Автор: Guinness 20.10.2015, 08:38 | ||
Да? И давно инженеры не любят Си? Хотя тут наверное стоит определиться в терминах, кто такие инженеры, и чем они занимаются. Если мы подразумеваем под инженерами людей, которым приходится сталкиваться с системным программированием, то, мягко говоря, они не считают Си убожеством. Остальная часть, задействованная в прикладных задачах (вывести графичек, что-нибудь посчитать), конечно, может негативно относится к Си, но это также странно, как если бы человек не любил ножи за то, что ими слегка неудобно закручивать саморезы. Не, я подозреваю, что такое возможно, и такие люди существуют. Но мне кажется, что это индивиды перечитавшие хабр, которые от слова Haskell так перевозбуждаются, что вся кровь от головы отливает в другие места. |
| Автор: Sartorius 20.10.2015, 09:02 | ||
Надо определиться с кругом задач сначала. Можно драйвера писать, можно мат/физ проблемы обсчитывать, визуализацией данных заниматься и т.д. И не каждый ЯВУ (или не ВУ |
| Автор: kemiisto 20.10.2015, 11:24 | ||||||||||
Мужики знают, мальчики, увы, нет.
Первое предложение - враньё. Второе, естественно, правда. Но каким образом оно противоречит тому, что я сказал, понять не удалось.
Плавали, знаем. В согласии с https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%BA%D0%BE%D0%BD_%D0%93%D0%BE%D0%B4%D0%B2%D0%B8%D0%BD%D0%B0 упомянем, что на идеи Гитлер, например, тоже был (да и есть) неплохой спрос, а значит они того стоят. Всё так, всё верно. Здесь и спорить то не о чем. Добавлено через 5 минут и 29 секунд
Это не инженеры. И никому дела нет до того, что Вы там под чем-то подразумеваете.
То есть по-вашему, инженеры графички строят?
Вы с кем вообще разговариваете? Сами с собой? Это не ко мне, это к специалистам. |
| Автор: Sun 20.10.2015, 13:13 | ||
Ну значит в Google работают сплошь одни мальчики, а все суровые мужики наверно работают исключительно в вашей фирме То есть не дает компактный код? Или понятный код не даёт? Можете привести пример вранья? Ну-ка напишите мне этот кусочек кода на каком-то другом языке, более компактно и понятно?
|
| Автор: Guinness 20.10.2015, 13:20 | ||
Ок, в терминах определились. Правда почему это не инженеры не понятно, ну да ладно. Я привёл довольно распространённые задачи для инженеров: 1) Вычисление результатов на основе каких-то данных. 2) Вывод этих резултатов в виде удобном для анализа. Это прикладные задачи, для решение которых использовать Си не требуется. Более того есть куча языков и фреймворков для их удобного и быстрого решения.
Да, мне в общем-то всё равно, просто стало интересно, что это за инженеры, которые считают Си убожеством. Из всех моих знакомых инженеров и программистов никто к нему негативно не относится. Могут поливать C++, Java, C#, Python и др, но не Си. Да и в интернете к нему никто плохо не относится, только в качестве троллинга. |
| Автор: LSD 20.10.2015, 14:24 | ||||
Ничего особенного. Даже на Java можно написать так же. А улучшить что либо в 3-х строчках - нереально, максимум все заинлайнить. Но раз ты настиваешь:
компактнее, яснее, быстрее |
| Автор: Sun 20.10.2015, 15:06 | ||||
Ну в таком случае
Кстати ты пропустил класс обертку для функции main как и саму функцию.
|
| Автор: kemiisto 20.10.2015, 15:30 | ||||||
Биологический возраст, очевидно, не играет здесь никакой роли.
Во-первых, более компактно не означает более понятно. Ну или, как минимум, не всегда означает. Во-вторых, мне, собственно, не понятно, что этот код делает. Компактно зато, да, ты очен крут. В-третьих, у меня есть обоснованные сомнения, что эту трёхстрочную писульку можно написать так коротко только на Питоне. Анонимные функции и встроенные средства работа со списками есть в куче куда более вменяемых языков. В-четвёртых, к чему эта писулька вообще была? Что она должна была доказать (или опровергнуть)? Что код на Питоне компактный и понятный? Ну, положим, компактный мы увидели. С понятным уже всё плохо. Но разве ТС нужен был ЯП с компактной нотацией? Там же совсем другие требования озвучены. Нет, обязательно нужно пихать этот клоунский язычишко всюду: и там где надо, и где не надо.
Любой инженер по определению должен считать Си убожеством. История создания и основные принципы, заложенные в эту наколенную убогую поделку, которую в приличном обществе и языком то программирования не назовут, противоречат всем известным принципам инженерно-технической деятельности. Ваши какие-то там знакомые "инженеры", либо не инженеры вовсе, а обычные жалкие программистишки, добавляющие в название своей профессии слово "инженер" для весу, либо "непуганные идиоты", которые кроме С ничего не видели. Ну да, если выбирать только из С, то он будет "лучшим".
Это лол, просто. Это что за новый такой критерий качества языка (отсутствие критики в интернете)? |
| Автор: Sun 20.10.2015, 15:37 | ||||
То-есть за вашу выдающеюся карьеру, вы достигли гораздо больших высот чем Гвидо Россум? Боже мой! Достойны ли мы тут вообще чатиться рядом с вами?!!
Ну давайте тогда так - напишем функцию вычисления факториала, свою собственную, средствами одного только языка. Используйте для этого на выбор любой язык, который считаете нужным. И попробуем сравнить - будет ли это понятней и компактней чем на Питон. |
| Автор: Guinness 20.10.2015, 16:59 | ||
Это не было критерием, я просто привёл свои наблюдения. А где я сказал, что заслуженно или не заслуженно? Просто такую реакцию я вижу впервые, вот и удивляюсь. |
| Автор: Sun 20.10.2015, 17:55 | ||
Ну чтож, пока наш гигант мысли собирается с мыслями, приведу пример функции факториала на Питоне. Факториал выбран специально, так как на собеседованиях нередко просят написать именно его. Меня обвинили во вранье и я вынужден защищаться. Пример не идеален, но он неплохо раскрывает возможности языка:
|
| Автор: Sartorius 20.10.2015, 18:04 | ||||
А чем так плох тот же факториал на С ?
Кстати какому кандидату Вы отдали бы предпочтение? Который итеративную или рекурсивную реализацию напишет? |
| Автор: Sun 20.10.2015, 18:26 | ||
В наше время, если претендент помнит слово факториал - его уже можно брать с руками и ногами Лучше с рекурсией, конечно. Для раскрытия темы. |
| Автор: Sartorius 20.10.2015, 18:33 | ||
А вот что по этому поводу пишет Макконел
Но это все |
| Автор: Sun 20.10.2015, 18:35 | ||||
Ну хотя бы тем, что для вызова этой функции надо маленький огород нагородить:
тогда как на Питоне полностью рабочая программа будет как:
|
| Автор: Фантом 20.10.2015, 18:36 | ||||
Вы таки будете много смеяться, но
Если что - это Фортран. |
| Автор: Alexeis 20.10.2015, 18:37 | ||
Сисег? Вычисление факториала еще до того как будет выполнена 1я строчка кода
Но за такой синтаксис поубивал бы ))) |
| Автор: Sun 20.10.2015, 18:37 |
Тем не менее, подавляющее большинство интервьюеров хотят увидеть именно рекурсию. Можно сказать требуют этого. Добавлено через 1 минуту и 44 секунды Ну тут вы вызвали готовую функцию sum. Можно усложнить код внутри безымянной функции. |
| Автор: Sartorius 20.10.2015, 18:43 |
| Alexeis, забавный трюк |
| Автор: Фантом 20.10.2015, 18:43 | ||||||
Вызов с выводом, если надо (тоже полная программа):
Добавлено через 2 минуты и 3 секунды Ну я же не упрекаю Вас в том, что Вы воспользовались готовой лямбдой. У каждого языка - свои возможности. Можно, усложните. |
| Автор: Sun 20.10.2015, 18:46 |
Прекрасно! |
| Автор: Фантом 20.10.2015, 18:50 | ||
Так ведь Ваша программа ничего не выводит (и вообще, может, еще не работает
|
| Автор: Sun 20.10.2015, 18:54 | ||||
Ваш пример выглядит внушающе |
| Автор: Sartorius 20.10.2015, 18:56 |
| Вряд ли количество строк кода может быть решающим критерием для оценки языка. Но если уж сравнивать, то на достаточном объеме данных: http://blog.wolfram.com/2012/11/14/code-length-measured-in-14-languages/ Python действительно выглядит неплохо по этому параметру. |
| Автор: Sun 20.10.2015, 18:57 | ||
Меня обвинили во вранье, что синтаксис Питона а) Компактный б) Понятный Я попытался данным примером доказать свою правоту. |
| Автор: kemiisto 20.10.2015, 19:06 |
| Меряться количеством строк в программе, считающей факториал? Вы это серьёзно? Остальное даже комментировать лень. Смысл? |
| Автор: LSD 20.10.2015, 19:11 | ||||
Передергиваешь. Ты для питона используешь repl а для явы требуешь полноценный класс. Твой код кстати тоже не запустится, просто так.
Твоя программа ничего не выводит. То что твоя repl среда пишет результат последнего выражения, не означает что там есть вывод. Плюс на 3-м питоне вообще не заработает так просто (helloworld.py - 100 errors, 34 warnings |
| Автор: Alexeis 20.10.2015, 19:12 | ||
При прочих равных может. Программы не только пишутся, но и поддерживаются. Компактный код требует меньше усилий для анализа. Функция, которая умещается в 1 экран анализируется быстрее чем функция, которая вмещается в 3 экрана. Мое мнение вообще такое, что идеальный язык программирования должен быть декларативным. Мы должны рассказывать компилятору чего мы хотим и какие условия и ограничения следует наложить, а на выходе получаем готовую программу. Как SQL, например. |
| Автор: kemiisto 20.10.2015, 19:18 | ||
Вот то предложение, которое я называю враньём. Я уже писал, что компактный код не всегда понятный. Чаще всего компактность достигается за счёт очень высокоуровневого синтасического сахара в больших количествах, который ещё нужно освоить, чтобы компактный код стал действительно понятным. Sun знаком с Питоновским сахаром, и компактные программы, написанные с его использованием, ему кажется понятным. Но что будет, если ему показать компактный код на другом, незнакомом ему языке, желательно с принципиально отличным синтаксисом, скажем на каком-нибудь LISP'е? Многи ли он там поймёт? Маловероятно, что вообще поймёт хоть что-то. Вообще, это беда большинства программистов. Узколобость что-ли какая-то, не знаю, как помягче сказать. Тонны синтаксического сахара и прям какое-то сексуальное удовлетворение от возможности в итоге записать никому ненужную функцию факториала в одну вместо десятка строчек! Программирование ради программирования. Проблема в том, что этими играми Вы и вам подобные затянули отрасль в помойную яму. А программируют ведь ещё и нормальные люди, и не ради самого процесса... |
| Автор: Sun 20.10.2015, 19:20 | ||||||
Справедливо, а так?
Смысл в том, что вы мне нахамили, и отказываетесь отвечать за свои слова. За сим, не вижу смысла продолжать с вами дискуссию Ваше ЧСВ просто зашкаливает. |
| Автор: kemiisto 20.10.2015, 19:26 | ||||
Верно, но разницы между 2 и 5 строчками при этом нет.
В эту игру математики играют уже больше половины века, а инженеры в курсе, что идельным декларативный ЯП никак быть не может, так как он будет слишком далёк от императивной машины. Для каких-то конкретных задач декларативный ЯП может подходить лучше императивного, но ЯП общего назначения должен быть императивным (возможно, с небольшой порцией декларативного высокоуровневог сахарка, если уж где-то кому-то сильно жмёт). Туда, собственно, индустрия и движется: абсолютное большинтсво доминирующих ЯП общего назначения императивны с небольшими включениями декларативных "фич". |
| Автор: Фантом 20.10.2015, 19:27 | ||
|
| Автор: kemiisto 20.10.2015, 19:27 | ||||||
На Фортране уже написали в теже так милые Вашему сердцу 2 строчки. Зачем мне повторяться? Добавлено через 1 минуту и 48 секунд И да, Fortran - это как LISP что-ли, только работаешь с массивами, а не списками. Добавлено через 3 минуты и 35 секунд И ещё раз повторю: смысла в упражнении с факториалом нет никакого. Добавлено через 11 минут и 30 секунд Но, если Вам так упёрлись однострочние факториалы, то, пожалуйста, держите. Haskell
F#
|
| Автор: Alexeis 20.10.2015, 19:48 | ||
Речь не о том, что мы можем сделать технически имеющимися средствами, а то к чему следует стремится. Т.е. если язык позволяет сообщать компилятору не только как делать, но и что делать то это уже несомненный плюс. Т.е. такой язык развивается в правильном направлении. Строчки складываются в блоки, блоки в подпрограммы. Я согласен, что пример с факториалом ничуть не показателен. Более показательной была реализация различных паттернов, потому что паттерны, это то с чем программист имеет дело каждый день. Например, далеко не все паттерны выглядят изящно и компактно на С/С++, тогда как языки с синтаксическим сахаром позволяют упростить целый класс или функцию до одной тривиальной конструкции. В результате функция на 3 страницы, уменьшается до 10ти строк. |
| Автор: LSD 21.10.2015, 12:23 | ||||
Мне уже нравится питон Да кстати, даже на Яве которая как кока-кола лайт - без сахара. Можно написать однострочный факториал.
|
| Автор: Nemo2007 25.10.2015, 12:43 | ||
| О-о-о, Ё-ё-ё. Я ж только спросил Ну ответы ожидаемы. 1) что понимается под надежностью... Конечно писать хорошо можно и на БЭСИКе, но язык может способствовать написанию читаемых, легче сопровождаемых и соответсвующих спецификациям (ожиданиям) программ или нет. Вот классический БЭЙСИК - считается , что не способствует. кто хочет поцеплятся к словам, то под надежностью и "правильностью " ЯВУ я понимаю то-же что и авторы http://www.hse.ru/data/2010/03/28/1217410398/programming-1-intro.pdf страницы 4-9 (если ничего не видно, откройте в Адоб Ридере, а не через браузер, к авторам не имею никакого отношения!, просто первое попавшееся, что нашел), кому лень - там ничего особенного - все то, чему учили еще 25 лет назад. 2) Процитирую себя любимого :
"Красивое лучше, чем уродливое. Явное лучше, чем неявное. Простое лучше, чем сложное. Сложное лучше, чем запутанное. Плоское лучше, чем вложенное. Разреженное лучше, чем плотное. Читаемость имеет значение. Особые случаи не настолько особые, чтобы нарушать правила......" Так все хорошо начинается. Масса проектов у энтузиастов... Решил книжки толстые почитать. Поначалу- ничего, вроде читабельность (языка) хорошая, но потом начинается "цирк Пайтона". По моему, эти декларации - брехня. Просто реальная брехня, т.к. Лутц (это типа классика?) сам описывает, подобные выше указанной, "фичи" языка. Их там хватает. И это еще люди типа Вирта не высказывались 3) Отсюда вопрос, который я хотел задать сразу, но не решился, опасаясь, что просто не правильно понимаю текущее положение дел. "Какого черта так много говорилось о "правильных" языках программирования, надежности, а реально используется г..но, а популярность набирает мега г..но" Я понимаю, почему С. Другого не было.... Написано много кода... и т.д. ОК. В жабе попытались чуть подправить, все вроде на "ура" восприняли. А дальше приходит Питон, PHP Может все эти проблемы программирования надуманы кабинетными учеными? Так ведь и межпланетные станции не туда летали и ракеты взрывались... Это мы еще про самолеты не знаем, потому как такое рассказывать низззя! Слишком большие деньги. (про самолеты - это только голые догадки, но почему должно быть иначе?) "То самолеты.. А вот в бизнесе обычном, купи-продай, все не так опасно и все нормально работает..." А сколько будет стоить день простоя крупной банковской системы? Не дороже ли взорвавшейся ракеты? С точки зрения рядового программиста, я могу понять- написав код, который хрен кто поймет и сможет сопровождать можно не хило прокачать собственную значимость. Но должны же быть люди, которые бьют линейкой по рукам за такое? Чего- то я не догоняю. 4) пробежав предыдущие посты хочу спросить "Я чего вдруг так часто как достоинство ЯВУ приводится краткость написания какой либо простой функци? Чего Вы за это цепляетесь?" Лаконичность != (читаемость | понятность); Вроде со скоростью набора текста у всех программистов терпимо. Я , например, одним из недостатков С -подобных считаю {}. Дело в том, что эти символы в массе текста сливаются и мало отличаются друг от друга. Да, конечно, стиль и правила программирования... Но если писать кратко в одну строчку? А если так писать нехорошо, то супер краткость - не фига не достоинство. А часто меряются тем,как кратко можно записать ту или иную функцию. Я тоже люблю красиво, но на практике в 60%-80 % случаев после end пишу как коментарий какому if, for, procedure он принадлежит. Нехило позже помогает разобаться во вложенных операторах, но это совсем не кратко. Высказался |
| Автор: Cheloveck 25.10.2015, 16:43 | ||||
Питон раньше явы появился По теме. Как я уже говорил, плохие программы можно писать на любом языке программирования. Кроме того, плохо тоже можно писать на всех языках. Защиты от плохого кода нет негде. Вообще, все эти поиски говорят только о неуверенности в себе ТС. Ты можешь прочесть хоть миллион всяких "Идеальных кодов" и "Рефакторингов", это тебе не поможет писать хороший код. Хороший код -- это тот код, который ты пишешь для того, чтобы читать его через два года.
Тебе надо просто определиться, зачем, для каких задач, тебе нужен ЯП. После посмотри, на каких языках обыно решают подобные задачи и вперёд. Например, есть задачи, для которых принято (было?) использовать TCL. А после того, как один язык освоишь, другие языки не вызовут вообще никакой сложности. Разве только всякие Erlang`и Haskell`ы, но и они не станут проблемой, если ты поймёшь, зачем тебе они нужны. |