Я обнаружил, что некоторые инструменты, такие как Noweb, не поддерживают макрос. Я хочу знать, каковы преимущества и недостатки макросов в грамотном программировании?
Макрос в грамотном программировании
Ответы (2)
Я предполагаю, что под «макросом» вы подразумеваете, что инструмент LP выполняет «макроподстановку», как препроцессор C и большинство ассемблеров.
Макрозамена - это «синтаксический сахар». Это способ написать один символ, обозначающий множество похожих деталей. Отсюда и термин «макрос»: это было «макропрограммирование», написанное на более высоком уровне абстракции.
Это то, что мы делали в былые времена, когда у нас не было объектно-ориентированного программирования, обеспечивающего легкодоступные уровни абстракции.
Было - технически - возможно иметь уровни абстракции и программирования в стиле макросов на C, используя только вызовы функций. Программирование "макросов" препроцессора не необходимо. Например, мы определяли встроенные функции как «макрос» препроцессора для ручной оптимизации нашего кода. Это потому, что компилятор C плохо оптимизировался в первые дни.
Теперь, когда у нас есть объектно-ориентированное программирование, возможности макросов более примитивных языков программирования не нужны.
Макросъемка Literate Programming использовалась в языках, отличных от объектно-ориентированного программирования (таких как C и Pascal), для создания возможностей класса и возможностей наследования на уровне LP.
В этом нет никакого смысла. Просто определите правильные классы и используйте правильное наследование.
Я написал 2 разных инструмента LP: TCLP - не поддерживает макросы: http://code.google.com/p/tclp amd NanoLP с очень гибкими макросами, поддерживающими: http://code.google.com/p/nano-lp.
И когда я писал TCLP, мои представления о макросах были - это плохо, потому что они разрушают структуру программы, что-то вроде другой макросистемы - вы можете думать об этом как о параллельной макросистеме на языке C. Макросы C скрывают реальный код - они не являются реальным вызовом функций, но скрывают (как заполнители!) Реальный код, а LP-макросы - это параллельный способ скрытия кода. Это недостатки.
Но если вы пишете хорошие LP-макросы, читаемые и понятные, то с их использованием проблем не возникает, поэтому я включил систему гибких макросов (с плейхолдерами, импортом, словарями переменных ...) в свой следующий инструмент - NanoLP.