Форум сайта python.su
Rodegast
Я не понял зачем ты этот язык делаешь и во что ты хочешь его компилировать
LevitanusНачинать надо с планирования.
для самообразования
Отредактировано py.user.next (Май 3, 2018 00:40:35)
Офлайн
py.user.nextс одной стороны, да. С другой, когда не знаешь толком всех возможностей языка и только осваиваешься с паттернами, и не можешь заранее предсказать, что можно реализовать, что нет, легче делать прикидки кодом…
Начинать надо с планирования.
py.user.nextна странице содержания ссылка на github
Также нужна система контроля версий.
py.user.nexthttps://dmitryivanov.net/
Также нужен трекер
Офлайн
читаю сейчас модуль ast, и вот думаю, что все-таки лучше:
доставать код функции через inspect и парсить их через parcer(), или все-таки держаться первоначального курса, и экспортировать только методы взаимодействия библиотечных объектов с внешним миром из самих объектов.
Я так понимаю, и так, и так не есть гуд. Может что-то упускаю?
Офлайн
LevitanusНу это поначалу только. Ты знаешь, что такое метод разработки “сверху вниз”? Тут писал пример.
С другой, когда не знаешь толком всех возможностей языка и только осваиваешься с паттернами, и не можешь заранее предсказать, что можно реализовать, что нет, легче делать прикидки кодом…
LevitanusНе, UML - это как блок-схемы, только более продвинутые. Есть разные виды схем UML. Не только описания классов. Есть там схема, где время жизни объектов относительно друг друга можно описывать точно. Есть там схема для представления переходов между состояниями объекта. Есть там схема для изображения использования фич программы. Достаточно точно можно описать все аспекты и только потом приступать к разработке.
Тем более, что по существу, половину архитектуры кодом реализовать, фактически то же, что и в UML расписать.
LevitanusЕсли бы у тебя было всё спланировано, то не было бы той каши, которая есть сейчас в коде. Ты бы действовал строго по плану, строго по поставленным задачам.
Ну и, если говорить про рисование - у меня уже пачка листов разрисована
Офлайн
py.user.next
те знают, что каши там и близко быть не должно.
LevitanusЯ тут согласен про кашу. Вы тут про детали спрашиваете, а мы тут даже близко не понимаем что вы хотите сделать. Что мы можем посоветовать?
Я так понимаю, и так, и так не есть гуд. Может что-то упускаю?
Отредактировано doza_and (Май 3, 2018 08:34:10)
Офлайн
> Начинать надо с планирования.
Начинать надо с определения предметной области т.е. нужно сначала определить для чего этот DSL вообще нужен, определить наиболее оптимальный синтаксис языка и от этого отталкиваться. Всякие UML, SCRUM и прочее нужно для командной разработки, если нет команды то на них можно забить.
> Я так понимаю, и так, и так не есть гуд. Может что-то упускаю?
Вот посмотри видео про DSL может быть и поможет: https://www.youtube.com/watch?v=Qf0TjcBG1oI
Офлайн
RodegastДля индивидуальной разработки это тоже всё нужно. Если ты пишешь небольшой скрипт, который потом не будет дописываться, этим можно пренебречь (и даже системой контроля версий). Другое дело, если ты пишешь что-нибудь на полгода и больше, где будут версии, архитектура. Да ты просто не вспомнишь всех аспектов программы, если через три года решишь поднять её до следующей версии или просто обнаружится баг, который надо будет исправить (бывает такое, что из-за обнаружившегося бага ты не можешь сделать дело (ты пытаешься что-то сделать и вдруг оказывается, что ты не можешь этого сделать, а почему - а потому что баг какой-то)). У меня просто сборки программ такие сложные, что я в одной сборке и установке программы, которые писал сам, могу разбираться потом целый день, если открываю программу на доработку через год или два. То есть, например, есть тестирование программы, как понять, какие тесты уже написаны, а какие нет? Пока ты пишешь поначалу там что-то, ты это всё помнишь: помнишь код самой программы; помнишь, что ты уже протестировал и что нужно ещё протестировать; помнишь, зачем это делать вообще. Когда же ты отложил программу и у тебя другие программы есть, то при возврате к первой программе ты уже не помнишь ничего, только в общих чертах. Не помнишь, что там тестируется даже и есть ли там вообще тесты какие-нибудь. И вот чтобы не перечитывать её код весь, чтобы не перечитывать все тесты заново (а их там уже дофига), чтобы помнить, что нужно тестировать, у тебя должен быть покрывальщик тестов подключен. Он ходит по всему коду, компилируется вместе с ним и в результате показывает, какие фрагменты кода покрыты, а какие - нет. Так вот, чтобы подключить покрывальщик тестов к проекту и чтобы его результаты складывались в удобное для программиста место, нужно столько всего написать в сборщике проекта, там такие детективы нужно разгадывать, такие запутанки нужно проделывать, - реально программировать надо, составлять алгоритм сборки, чтобы всё-всё-всё учесть и чтобы ничего не поехало потом. Короче, это DevOps на полную катушку - сисадминство с элементами программирования.
Всякие UML, SCRUM и прочее нужно для командной разработки
Отредактировано py.user.next (Май 4, 2018 00:30:15)
Офлайн
> Короче, это DevOps на полную катушку - сисадминство с элементами программирования
Вот именно! Что бы задействовать всю эту машинерию тебе придётся приложить значительные усилия. С UML-ом та же беда, схемы должны отражать реальную структуру объектов, а значит тебе придётся постоянно тратить усилия на их актуализацию.
Будут ли всё это оправдано при индивидуальной разработки? Не думаю.
Офлайн
RodegastНе, настройка только занимает время. Задействование потом сводится к простым командам типа “make tests-coverage”. Вот эта штука заготавливает Makefile-файлы и shell-скрипты, затем спускается в нужную директорию и запускает make уже для приготовленных Makefile-файлов. Дальше там снова что-то нужное готовится и для этого всего запускаются приготовленные ранее shell-скрипты. Выглядит всё так, что ты ввёл команду и она пошла собирать; потом собрала и стала выполнять тесты, которые на экран уже пишут результаты. А после всего вывода у тебя есть информация о выполненных тестах и в нужной директории лежит всё покрытие всех исходников этими тестами. При этом в каждом получившемся файле, в его комментарии стоит название проекта, его текущая версия и копирайт с текущей электронной почтой для фидбека. Всё это редактируется в одном месте проекта, поэтому достаточно поменять одну строку в одном файле описания проекта, чтобы при следующей сборке по всем файлам на любых уровнях произошла замена той же электронной почты или даты последней сборки. Имя проекта, которое используется также для регистрации в операционной системе при установке программы, также записано лишь в одном файле описания (абстрагировано до шаблонной строки), поэтому со временем уже есть проекты, чьи настройки можно просто напрямую копировать в новый проект и в них не нужно долго что-то настраивать, только поменять файл описания проекта.
Вот именно! Что бы задействовать всю эту машинерию тебе придётся приложить значительные усилия.
RodegastСхемы можно дорисовывать, потому что делаются они в программе, которая хранит их в виде xml-файла. Перед добавлением класса просто рисуешь его в программе, а потом уже в код добавляешь. И потом уже коммитишь это всё вместе. Получаются актуальные данные. При этом UML действует, как обычная блок-схема, - проясняет будущий код и не даёт запутаться.
С UML-ом та же беда, схемы должны отражать реальную структуру объектов
Отредактировано py.user.next (Май 4, 2018 15:02:53)
Офлайн
> Не, настройка только занимает время …. поэтому со временем уже есть проекты, чьи настройки можно просто напрямую копировать в новый проект и в них не нужно долго что-то настраивать, только поменять файл описания проекта.
Выложи шаблоны для этих настроек на github, тогда и можно будет всё это обсуждать.
> Схемы можно дорисовывать … Перед добавлением класса просто рисуешь его в программе, а потом уже в код добавляешь.
Не забывай что тебе ещё атрибуты все прописывать надо, а т.к. программирование это процесс творческий то они могут активно меняться. В итоге ты всё замучаешься её редактировать и всё равно где-то что-то упустишь.
Офлайн