Русский
Русский
English
Статистика
Реклама

J

Использование GitHub в обучении. Примеры. Часть III

09.01.2021 20:18:44 | Автор: admin

Продолжу выкладывание примеров использования GitHub'а как инструмента обучения.


Предыдущий пример

Вариант командной работы с несколькими репозиториями

Расскажу про "самый приближённый" к реалиям вариант, когда в рамках реализации одной программы возникают подпроекты и над ними трудятся разные команды в разных репозиториях.

Примерный порядок действия

Часть действий повторяются из предыдущего примера

  • Создаёте аккаунт организации

  • Добавляете в него студентов.

  • Создаёте репозиторий. В README.md добавляете текст задания. Также наполняете репозиторий предварительно необходимым минимумом (нужными файлами для выполнения задания). Создаёте необходимые ветви. Обычно создаю ветвь dev или develop

  • Студенты получив задания, клонируют репозиторий себе на локальные машины.

  • По мере обсуждения решения выявляются подпроекты. Создаются команды под каждый подпроект. Для каждого подпроекта создаётся свой репозиторий с предварительным наполнением.

  • Команды выполняют задания, коммитят, пушат. Задания можно выдавать как черезissues, так и какой-нибудь сервис с Kanban или Scrum

  • Создают запрос на слияние

  • Проверяете. Оставляете комментарии либо ко всему заданию целиком, либо к его отдельным частям.

  • Создаются релизы. Готовые DLL или ещё что берётся из релизов и подключается в основной проект.

  • В каждой команде ведётся техдокументация.

Плюсы и минусы

Плюсы:

  • Более приближенный к реальности вариант моделирования

  • Можно назначать студентов в качестве ревьюеров кода. Даже преподавательского.Я люблю делать в коде специально ошибки как явные, так и неявные, чтобы студенты их находили и исправляли.

  • Каждая команда работает над своим подпроектом

  • Студенты пробуют межкомандное взаимодействие при разработке одного большого проекта.

Минусы:

  • Нужно создавать отдельный аккаунт для организации

  • Нужно объяснить как работать с ветками и следить, чтобы пушили в нужную ветку.

  • Нужно объяснять что такое релиз, как происходит версионирование.

  • Нужно объяснять как пишется и для чего нужна техдокументация.

Какие можно внести дополнения:

  • связать репозиторий с Kanban- или Scrum-сервисом, чтобы выдача заданий фиксировалась в карточках на досках

  • создавать не отдельные репозитории для каждого подпроекта, а использовать gitsubmodules

Подробнее..

Язык J становится ближе к людям

09.09.2020 14:04:11 | Автор: admin
Отличительная черта языка J это возможность написания итеративных алгоритмов без явного использования циклов и рекурсии. К примеру, сумма всех элементов массива решается так "+/", а среднее всех элементов массива так "+/%#".

Различные обзоры J уже не раз публиковались на Хабре. Например в этой статье и в этой.

J язык с 30-летней историей и он все еще развивается и совершенствуется. Однако оставалось в J одно белое пятно итеративные алгоритмы с остановкой по условию. Для этого предлагалось использовать конструкцию while. в паре c break. и continue.

Использование while. в J выглядит избыточным и неуклюжим. А, кроме того, серьезно проседает по скорости в сравнении с тацитными формами.

И вот в 9й версии языка добавили новый союз F (названый так по первой букве слова fold).



Для сравнения решим задачу с использованием while. и с использованием нового союза
Условие простое: получить из исходного массива новый массив, который содержит удвоенные значения элементов. Длина нового массива задается извне и может быть меньше исходного.
Сначала с использованием while.

t =: dyad definec =. 0i =. i.xz =. $0while. -. c = ydo. z =. z , (+: (c { i))c =. >: cend.z)10 t 5    0 2 4 6 8

А теперь решение с использованием нового союза F. Добавим, что условие выхода из цикла проверяется с помощью глагола Z:

COUNT =: 6v=: dyad define_2 Z: -.* COUNT =: <: COUNTx)'' +: F:. v (i.10)    0 2 4 6 8

В документации обещают, что F. будет не только удобнее, но и быстрее while. В конце концов, J становится ближе к людям!

P.S. Знающие люди могут заметить, что эта задачка легко решается без использования как цикличных, так и новых конструкций. Достаточно извлечь подмассив нужной длины и потом в тацитной форме его обработать. Однако в реальных задачах часто бывает, что длина подмассива заранее неизвестна и условие останова вычисляется в процессе работы алгоритма.
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru