Dao_work> в чём плюсы питона по сравнению с С++
Dao_work> хотя наверно это тоже самое что говорить в чём плюсы динамического языка от компилируемого
Antoni> *сейчас начнется :-))
Antoni> итак!
Antoni> интерпретатор, динамичность позволяет сделать язык выше по уровню, воплотить любую фантазию автора. Компилятор же должен быть разумной сложности, ибо необходимость транслировать в четкий машинный код накладывает ограничения на язык - Python гораздо выше по уровню, чем C++
Dao_work> И где его стоит применять ?
Antoni> фантазия нужна :-) Если говорить о прикладном программировании на языках высокого уровня. Чем ближе язык и удобнее для человека - тем эффективнее будет процесс написания программы . Также надо учитывать что постоянно дорабатываются взгляды на то каким должен быть язык программирования, прогресс идет. Си++ очень старый язык.
Dao_work> мне нужна программа проверить листов 10 а4 и найти мне там все Ип за определённое число отсортировать и оформив вынести в отдельный фаил - что лучше ? С++ или Питон )
Antoni> конечно Python! Найти все ipшки на нем будет так:
print filter(lambda s: '18.03.2008' in s, open('file.log','rt').readlines()) все :-)
Даже если чуть усложнить чтобы лучше вывод был то все равно 1-3 строки будет .
rint map(lambda s: s.split('\t')[0], filter(lambda s: '18.03.2008' in s, open('file.log','rt').readlines()))
допустим что в логе все разделяется табами и ip идет первым :-)
Dao_work> А вот если нам надо рассчитать сложный интеграл С++ или Питон )
Antoni> рассчитать интеграл на Python тоже несложно :-) функциональный язык вычислений вообще удобнее подходит
Dao_work> функциональный язык вычислений ?
Antoni> функциональные языки более математичны и изначально лучше подходят для записи расчетов :-) так вот, рассмотрим разные параметры языков
во первых синтаксис , современный взгляд таков, что хороший синтаксис позволяет программисту лучше и быстрее воспринимать программу и делать меньше ошибок
короткий синтаксис уменьшает время на набор кода у Си++ синтаксис "плохой" (можно найти аналитические статьи, это подробно обсуждалось уже не первый год)
Dao_work> конечно лучше набрать puts "Hello !" чем мучатся как в Java )) (Андрей Привет ;) )
Antoni> на Python это: print 'Hello!' и никаких мучений :-) Дальше парадигмы, в Python (как и во многих современных языках) больше парадигм, чем в Си++
раньше языки были с меньшим числом парадигм: чисто процедурные или ООП максимум, или чисто функционально. Сейчас модно смешивать стили
это вместе с синтаксисом приводит к тому, что на Python тот же алгоритм обычно в 3 - 5 раз меньше строк чем на Си++ в современных динамических языках меньше системной работы - автоматическое управление памятью и меньше "лишних" структур например задача найти сумму чисел -
на процедурном языке это будет так:
1. создать массив и заполнить его: a[0] = 3; a[1] = 5; a[2] = 7
2. создать временную переменную для накопления суммы s
3. пройти цикл по массиву и получить результат во временной переменной
в функциональном языке половины этого не надо print reduce(lambda a,b: a+b, [3,5,7],0) во первых не надо создавать массивов почти никогда, все делается на лету списковыми структурами во вторых не нужны временные переменные, информация может передаваться напрямую из функции в функцию. Между прочим временные переменные увеличивают вероятность ошибки в программе, ибо случайно в них можно что-то не то в другом месте программы присвоить. Если временных переменных много за ними трудно следить в разных частях процедуры.
Всё же моё личное мнение – пока С++ остаётся неплохим языком для того чтобы начать изучать программирование. Гораздо лучше Паскаля.
вторник, 18 марта 2008 г.
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий