Форум


FAQ    Поиск   Пользователи   Группы   Регистрация 
Профиль    Войти и проверить личные сообщения   Вход
Стандарт кодирования SCL

 
Начать новую тему   Ответить на тему    Список форумов SIEMENS, Россия. IA&DT -> Промышленное программное обеспечение
Предыдущая тема :: Следующая тема  

Вы используете стандарт кодирования при разработке программных блоков на языке SCL?
Да, использую общепринятый стандарт
22%
 22%  [ 2 ]
Да, использую, стандарт внутри организации на основе общепринятого стандарта
0%
 0%  [ 0 ]
Да, использую собственный стандарт
22%
 22%  [ 2 ]
Нет, не использую
22%
 22%  [ 2 ]
Не вижу необходимости в стандарте/Не использую SCL
33%
 33%  [ 3 ]
Всего проголосовало : 9

Автор Сообщение
Oleg Mikelson



Зарегистрирован: 01.07.2013
Сообщения: 4

Сообщение Добавлено: Чт Июл 04, 2013 12:13    Заголовок сообщения: Стандарт кодирования SCL Ответить с цитатой

Добрый день, коллеги!

При разработке ПО довольно частой проблемой является различие стилей в написании программного кода у нескольких разработчиков. Проблема решается введением стандартов кодирования (оформления) исходного кода. При создании программных блоков на языке SCL у меня возникла необходимость разработки такого стандарта кодирования. За основу я предполагаю взять один из C или Pascal стандартов, но перед этим хотел бы послушать коллег - используете ли вы стандарты кодирования? Если да, то какие - собственные внутри организации или общепринятые, информация о которых лежит в общем доступе?

Спасибо!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
komatic
Писатель со стажем


Зарегистрирован: 01.03.2005
Сообщения: 521

Сообщение Добавлено: Чт Июл 04, 2013 14:44    Заголовок сообщения: Ответить с цитатой

Скажите, а что должно входить в этот стандарт?

кроме размеров отступов, выравнивания и названия перемененных и функций ничего в голову не приходит...

если это все, то название стандарт слишком громкое помоему, больше на правила оформления листинга походит...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
iopornyy
Начинающий писатель


Зарегистрирован: 10.06.2013
Сообщения: 50

Сообщение Добавлено: Чт Июл 04, 2013 15:15    Заголовок сообщения: Ответить с цитатой

komatic писал(а):
Скажите, а что должно входить в этот стандарт?
Написано же по русски "Стандарт кодирования" - выбираем стандарт кодирования США512 и как нибудь забываем написать на обратной стороне клавы пароль для декодирования :)

Для Паскале-подобных языков есть стандартная идеология стиля написания программы для защиты от себя дурака.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
komatic
Писатель со стажем


Зарегистрирован: 01.03.2005
Сообщения: 521

Сообщение Добавлено: Чт Июл 04, 2013 15:24    Заголовок сообщения: Ответить с цитатой

iopornyy писал(а):

Для Паскале-подобных языков есть стандартная идеология стиля написания программы для защиты от себя дурака.


то что гдето чтото есть, даже не сомневаюсь :).

мой вопрос где на это можно посмотреть как пример, тогда будет понятно что имел ввиду автор, может действительно стоящая штука.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Oleg Mikelson



Зарегистрирован: 01.07.2013
Сообщения: 4

Сообщение Добавлено: Чт Июл 04, 2013 17:07    Заголовок сообщения: Ответить с цитатой

"Стандарт кодирования" - общепринятый термин, можно называть стандартом оформления, если так больше нравится. Включает в себя правила именования переменных и функций в зависимости от их типа, видимости и т.п., рекомендации по использованию различных языковых конструкций, требования к форматированию и использованию комментариев в коде.
Тут стандарт кодирования - не самоцель. Просто необходимо разработать правила для совместной разработки, что и будет сделано. Пока необходимо собрать сведения о том, кто как поступает при разработке ПО на языке SCL. Возможно тот стандарт, который будет разработан, будет содержать исключительно требования к стилю кода. Всё возможно.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Platonov
Писатель со стажем


Зарегистрирован: 05.12.2012
Сообщения: 546

Сообщение Добавлено: Чт Июл 04, 2013 18:06    Заголовок сообщения: Ответить с цитатой

Oleg Mikelson писал(а):
"Стандарт кодирования" - общепринятый термин, можно называть стандартом оформления, если так больше нравится. Включает в себя ...

Предполагаю, что никто из вашей лабратроллии не читал ни одной из 366 страниц секретной книжки для служебного использования 6ES7811-1CC04-8BA0
S7-SCL V5.1 для S7-300/S7-400 писал(а):
Структура SCL программы
5-2 A5E00059543-01
5.2 Порядок следования блоков
Здесь представлены общие правила:
Вызываемые блоки находятся перед вызывающими блоками.
Это означает следующее:
• Тип данных, определяемый пользователем (UDT), должен предшествовать блоку, в котором он используется.
• Блоки данных, в которых используются данные, определенные пользователем (UDT), должны следовать за UDT.
• Блоки данных, которые могут быть доступны логическим блокам, должны предшествовать им.
• Экземплярные блоки данных должны следовать после функциональных блоков, с которыми они связаны.
• Организационный блок OB1, который вызывает другие блоки, стоит в самом конце. Блоки, которые вызываются блоком OB1, должны предшествовать вызывающим блокам.
• Блоки, которые Вы вызываете из исходного файла, но не программируете в этом же исходном файле, должны быть созданы в пользовательской программе до компиляции файла.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
komatic
Писатель со стажем


Зарегистрирован: 01.03.2005
Сообщения: 521

Сообщение Добавлено: Чт Июл 04, 2013 18:08    Заголовок сообщения: Ответить с цитатой

Oleg Mikelson писал(а):
"Стандарт кодирования" - общепринятый термин, можно называть стандартом оформления, если так больше нравится. Включает в себя правила именования переменных и функций в зависимости от их типа, видимости и т.п., рекомендации по использованию различных языковых конструкций, требования к форматированию и использованию комментариев в коде.
Тут стандарт кодирования - не самоцель. Просто необходимо разработать правила для совместной разработки, что и будет сделано. Пока необходимо собрать сведения о том, кто как поступает при разработке ПО на языке SCL. Возможно тот стандарт, который будет разработан, будет содержать исключительно требования к стилю кода. Всё возможно.

ясно, почитал на эту тему здесь - Стандарт оформления кода

очень неплохо выглядит, смело взял бы оттуда:
+венгерскую нотацию
+стили отступа, например стиль GNU (четыре символа для блока, два для скобок)
+обязательные документирующие комментарии аналог в в SCL

Код:
TITLE = 'Block Title'
//
// Block Comment...
//
VERSION: '1.0'
AUTHOR: Author
NAME: Name
FAMILY: Family


+отсутствие магических чисел (исользование именованных констант вместо них)
Код:
CONST
        // Constants

END_CONST


+ограничение размера кода по горизонтали (чтобы помещался на экране)

+специально для SCL - диапазоны номеров для функций, блоков данных и памяти
(например функции с номерами 400-500 это библиотечные, память с адресами M1000.0-1100.0 глобальные и т.д.)

Последние четыре пункта использую сам, почти всегда :)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
komatic
Писатель со стажем


Зарегистрирован: 01.03.2005
Сообщения: 521

Сообщение Добавлено: Чт Июл 04, 2013 18:19    Заголовок сообщения: Ответить с цитатой

отличный пример правильного профессионального подхода - бесплатная библиотека oscat, можно легко найти поиском в гугле.

вот пример функции из нее:
в шапку вынесены используемые функции, в конце история изменений
Код:
FUNCTION MODR : REAL
TITLE = 'MODR'
//
//this is a modulo funtion for real numbers
//modr(5.5,2.5) = 0.5
//
//uses: FLOOR2 [FC82]
//
VERSION : '1.5'
AUTHOR  : hugo
NAME    : MODR
FAMILY  : MATH

VAR_INPUT
    IN : REAL;
    DIVI : REAL;
END_VAR

BEGIN
 
IF divi = 0.0 THEN
    MODR := 0.0;
ELSE
    MODR := in - DINT_TO_REAL(FLOOR2(in / divi)) * divi;
END_IF;
 
 
(* revision history

hm  4. aug.2006     rev 1.0

hm  28. jan.2007   rev 1.1
    modr(x,0) will deliver the result 0

hm  21. mar 2008    rev 1.2
    use D_trunc for compatibility reasons

hm  4. apr. 2008    rev 1.3
    added type conversion to avoid warnings under codesys 3.0

hm  31. oct. 2008   rev 1.4
    changed algorithm to the more common version using floor instead of TRUNC

hm  10. mar. 2009   rev 1.5
    real constants updated to new systax using dot

*)
END_FUNCTION

Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Platonov
Писатель со стажем


Зарегистрирован: 05.12.2012
Сообщения: 546

Сообщение Добавлено: Пт Июл 05, 2013 8:00    Заголовок сообщения: Ответить с цитатой

komatic писал(а):
отличный пример правильного профессионального подхода - бесплатная библиотека oscat...
в шапку вынесены используемые функции, в конце история изменений
Код:

.... 
 
(* revision history

hm  4. aug.2006     rev 1.0

hm  28. jan.2007   rev 1.1
    modr(x,0) will deliver the result 0

hm  21. mar 2008    rev 1.2
    use D_trunc for compatibility reasons

hm  4. apr. 2008    rev 1.3
    added type conversion to avoid warnings under codesys 3.0

hm  31. oct. 2008   rev 1.4
    changed algorithm to the more common version using floor instead of TRUNC

hm  10. mar. 2009   rev 1.5
    real constants updated to new systax using dot

*)
END_FUNCTION

Отличный пример 3-х годичного лизания наипростейшей функции - или история шараханья при росте профессионализма автора :)
и так не долизанной до конца
new systax - Возможно, вы имели в виду: new syntax
имена переменных ничего не говорят об их типе in/divi - но ведь в шапке modR
нет комментариев по назначению переменных
и по самому коду
... длиннее чужой стандарт визуально выглядит так
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
komatic
Писатель со стажем


Зарегистрирован: 01.03.2005
Сообщения: 521

Сообщение Добавлено: Пт Июл 05, 2013 8:47    Заголовок сообщения: Ответить с цитатой

Еще раз хочу сказать - oscat отличный пример разработки и поддержки группой разработчиков кроссплатформенной бесплатной библиотеки, состоящей приблизительно из 600 функций для Step7 SCL, Codesys, Pcworx.

Ребята сделали хорошую вещь, что сделал господин Platonov?
уверен что то во много раз лучше, раз может так критично осуждать их работу.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Platonov
Писатель со стажем


Зарегистрирован: 05.12.2012
Сообщения: 546

Сообщение Добавлено: Пт Июл 05, 2013 9:27    Заголовок сообщения: Ответить с цитатой

komatic писал(а):

что сделал господин Platonov?
Сейчас работаю вышибалой - позавчера порвал плиту, вчера выбил 2 зуба :) - реально не шутка.
Металлисты не учли расширение металла от жары :(

komatic писал(а):
Еще раз хочу сказать - oscat отличный пример разработки и поддержки группой разработчиков кроссплатформенной бесплатной библиотеки, состоящей приблизительно из 600 функций для Step7 SCL, Codesys, Pcworx.
Как то стараюсь писать сам и использовать проверенные практикой блоки из состава поставки Step7,
а не узнавать через 3 года, что хорошие ребята немного промахнулись в своей самооценке
и чтобы не доходило до
http://plc4good.org.ua/view_post.php?id=182
Цитата:
БАБАХ!!! А что это было?

А этот преобразователь всегда должен дымиться как сейчас?

Пытался открыть клапан, но ничего не случилось. Секундочку, на соседнем реакторе открылся тот же клапан...

Я не понимаю, на чертеже все отлично соединялось.

Не заморачивайтесь с проверками, просто запустите. Что плохого может случиться?

...
Удачи с использованием чужого кода....
Что плохого может случиться?

**************
Какая то нехорошая психологическая тенденция появилась:
Завёл сайт
начал там бложить
за счёт этого повысил себе самооценку
все остальные стали козлами...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
komatic
Писатель со стажем


Зарегистрирован: 01.03.2005
Сообщения: 521

Сообщение Добавлено: Пт Июл 05, 2013 9:40    Заголовок сообщения: Ответить с цитатой

Позиция понятна, сам с осторожностью использую чужой код.

Но в данной конкретной теме это приводилось как пример использования стандарта кодирования, для использования в разработке собственного ПО.

Не вижу ничего плохого, чтобы использовать хороший опыт в собственных разработках.

Platonov писал(а):

Какая то нехорошая психологическая тенденция появилась:
Завёл сайт
начал там бложить
за счёт этого повысил себе самооценку
все остальные стали козлами...

что за бред???????????????? даже не знаю что и сказать, уважаемые модераторы это нормально с вашей точки зрения?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Platonov
Писатель со стажем


Зарегистрирован: 05.12.2012
Сообщения: 546

Сообщение Добавлено: Пт Июл 05, 2013 9:53    Заголовок сообщения: Ответить с цитатой

Я ещё повторю мысль - пример с кодом очень неудачный.
Прежде чем выдумывать свой стандарт неплохо бы прочитать указанную выше книжку для служебного использования и труды Вирта о том почему он придумал Паскаль
Цитата:
Язык Паскаль был создан Никлаусом Виртом в 1968—1969 годах после его участия в работе комитета разработки стандарта языка Алгол-68.
Он был опубликован в 1970 году Виртом как небольшой и эффективный язык, чтобы способствовать хорошему стилю программирования, использовать структурное программирование и структурированные данные.


Тут есть ещё Разраб с такой же бложной болезнью - благо у нас пока каждый может высказать своё мнение и подобные детские ябиды тут не уместны
Цитата:
даже не знаю что и сказать, уважаемые модераторы это нормально?
твой рейтинг упал :(
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
komatic
Писатель со стажем


Зарегистрирован: 01.03.2005
Сообщения: 521

Сообщение Добавлено: Пт Июл 05, 2013 10:12    Заголовок сообщения: Ответить с цитатой

Platonov писал(а):
Я ещё повторю мысль - пример с кодом очень неудачный.
Прежде чем выдумывать свой стандарт неплохо бы прочитать указанную выше книжку для служебного использования и труды Вирта о том почему он придумал Паскаль
Цитата:
Язык Паскаль был создан Никлаусом Виртом в 1968—1969 годах после его участия в работе комитета разработки стандарта языка Алгол-68.
Он был опубликован в 1970 году Виртом как небольшой и эффективный язык, чтобы способствовать хорошему стилю программирования, использовать структурное программирование и структурированные данные.


Тут есть ещё Разраб с такой же бложной болезнью - благо у нас пока каждый может высказать своё мнение и подобные детские ябиды тут не уместны
Цитата:
даже не знаю что и сказать, уважаемые модераторы это нормально?
твой рейтинг упал :(


ну раз адекватный разговор закончен :)
берегите себя

Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Platonov
Писатель со стажем


Зарегистрирован: 05.12.2012
Сообщения: 546

Сообщение Добавлено: Пт Июл 05, 2013 10:28    Заголовок сообщения: Ответить с цитатой

Вот в этом наглядно и различаются стили программирования от стандарта 1-битного кодирования - подмена понятий.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Oleg Mikelson



Зарегистрирован: 01.07.2013
Сообщения: 4

Сообщение Добавлено: Пт Июл 05, 2013 11:03    Заголовок сообщения: Ответить с цитатой

Platonov писал(а):

Предполагаю, что никто из вашей лабратроллии не читал ни одной из 366 страниц секретной книжки для служебного использования 6ES7811-1CC04-8BA0


Жаль, что господин Platonov не смог разобраться в сути проблемы и предоставил информацию о руководстве по использованию S7-SCL, которое содержит базовые знания о структуре, языковых конструкциях SCL и другую необходимую к изучению информацию, но едва ли раскрывает смысл, который я вкладываю в понятие стандарта кодирования (оформления кода). Я уверен, что это не связано с его некомпетентностью в заданном вопросе или нежелании разобраться в сути проблемы. Думаю, причина в безудержном остроумии и искромётности в применении редких юмористических опусов с использованием анаграмм и каламбуров, в результате чего энергии на изучение поставленного вопроса просто не остаётся.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Cerberus
Написал больше чем Вы читали


Зарегистрирован: 30.10.2006
Сообщения: 1161
Откуда: Украина, Днепродзержинск

Сообщение Добавлено: Пт Июл 05, 2013 11:46    Заголовок сообщения: Ответить с цитатой

В принципе то, что было написано komatic'ом упрощает чтение программы и, соответственно, полезно.
Подобный подход есть не только для SCL - PHP
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
proskur
Написал больше чем Вы читали


Зарегистрирован: 15.08.2011
Сообщения: 1372

Сообщение Добавлено: Пт Июл 05, 2013 12:37    Заголовок сообщения: Ответить с цитатой

Цитата:
раскрывает смысл, который я вкладываю в понятие стандарта кодирования (оформления кода)
Какой смысл вы вносите запутыванием понятий ?
То есть как тему назовёте, так она и будет кодироваться далее не в том направлении.
Цитата:
Кодирование информации — процесс преобразования сигнала из формы,
удобной для непосредственного использования информации,
в форму, удобную для передачи...
Кто то кодирует программу, чтобы было не понятно ни самому ни любому другому,
кто то использует приёмы стиля, чтобы программа была понятна самому и любому другому.
Цитата:
Стиль — особое качество формы произведения искусства, достигаемое целостностью творческого метода, способов формообразования, приемов композиции, индивидуальной манеры и техники, свойственных художникам определенного исторического периода...
Я имею один стиль в логичности имяобразовании, а коллега имеет свой стиль - индивидуальные манеры.
И мы друг друга не всегда понимаем - просто наши логики являются продолжением нашего жизненного опыта инженера-универсала вводящего объекты в жизнь или офисного планктона не видевшего объект в живую.
Ставлю планктон перед фактом, что мой стиль рабочий, а не умозрительно теоретический.
На днях анимировал объекты во Флексе по заготовке имён планктона - имел много лишних кликов из-за того, что структура имён имела обратную к адресу сортировку.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
canada
Написал больше чем Вы читали


Зарегистрирован: 25.01.2009
Сообщения: 1084
Откуда: Киров

Сообщение Добавлено: Пт Июл 05, 2013 12:52    Заголовок сообщения: Ответить с цитатой

...а что до господина Platonov'a - не стоит на него обижаться и начинать трения. :) Такой уж у него "стиль и манера" общения...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
proskur
Написал больше чем Вы читали


Зарегистрирован: 15.08.2011
Сообщения: 1372

Сообщение Добавлено: Пт Июл 05, 2013 13:14    Заголовок сообщения: Ответить с цитатой

canada писал(а):
...а что до господина.....
Мне одному кажется и пора креститься ?
Тут холопы господ обсуждают или коллегам больше нечего по стилю написать ?
Предлагаю обсудить книгу и по неясным автору вопроса моментам объяснить ему, что красивое оформление неработающего алгоритма не является решением проблемы, как у одного авторитетного автора
Voldemus писал(а):
Бронислав писал(а):
У вас какие-то вызываемые DB/FB/FC/итд скомпилированы позднее чем вызывающие. Скорее всего, это вызвано порядком расположения блоков в SCL исходниках. Черевато это логическими ошибками программирования, которые компилятор отловить не может, но может предупредить о возможности их возникновения, основываясь на метках времени. Также это может привести к ошибкам в работе программы, вызванных отличием интерфейсов реальной и вызываемой в исходнике функции.

У меня действительно было такое, что вызываемые функции в тексте программы были расположены после точек их вызова. Странно, что компилятор SCL не указал на этот факт. Я перекомпоновал текст, но это ничего не изменило. Было время, когда я программировал PLC на языках PL/M и C, так там компиляторы такие моменты отлавливали элементарно. Что касается отличия интерфейсов реальной и вызываемой в исходнике функции, то такие моменты компилятор SCL должен безусловно выявлять. Если компилятор SCL всего этого не делает, то слабый это компилятор. Разработчики компилятора решили пойти по легкому пути. Дабы не утруждать себя разработкой нормального компилятора было введено понятие “метки времени”, мол, возможно, у Вас что-то в проекте не так, но конкретно сказать не можем.

Так что прекращаем обсуждать морально и физически умерший классический SCL v5.1 и мирно переходим к обсуждению инновационного SCL v12 с предъявлением к реализации своих хотелок :)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов SIEMENS, Россия. IA&DT -> Промышленное программное обеспечение Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB 2.0.11 © 2001, 2002 phpBB Group