Re[11]: Организация лаб по Pascal
От: elmal  
Дата: 09.09.17 08:25
Оценка: +1
Здравствуйте, AlexRK, Вы писали:

ARK>Я бы не сказал, что руст уже мейнстрим. Ну и, в любом случае, рассуждать о смерти структурного программирования, мягко говоря, преждевременно.

Вообще, уже давно не говорят про такое понятие, как структурное программирование. Говорят об императивщине. О функциональщине. О декларативщине. Про оопвщину. И про кучу других парадигм, более специализированных и не таких явных и популярных. А реально всегда идет смесь всех этих подходов. Ибо ни один из подходов не является серебряной пулей, когда то хорош один, когда то другой. Ну и пересматриваются бест практики в каждой парадигме. Но именно термина "структурного" программирования в современном мире давно нет. Ближе всего к этому императивный подход. Но бест практики императивного подхода сейчас совсем другие, совсем не такие, какие были в момент разработки паскаля.
Re[7]: Организация лаб по Pascal
От: elmal  
Дата: 09.09.17 08:39
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>На работе будет 90% рутины, и дай Бог, 10% инетереса.

LVV>Поэтому студень должен знать свое будущее — писание кода для совершенно рутинных задач.
LVV>А кому инитересно — пусть на кафедре остаются интересные задачи решать...
На деле рутину можно и нужно автоматизировать. Вот у меня тоже рутина. Страшнейшая. Только я в рамках этой рутины написал движок. У меня постоянно меняются требования — я написал простенький DSL на основе которого делается кодогенерация. И рутинные задачи стараюсь делать так, чтобы получилось платформа, и чтобы дальше эти рутинные задачи щелкались как орешки. Более того, когда я свой движок сделаю достаточно хорошим и он устаканится, когда появится понимание что реально нужно, на этом движке буду писать не я, а совсем другие люди. Которые потом будут помнить особенности этого движка лучше, чем я сам, хоть я и был автором .
Рутина тоже автоматизируется!
Re[11]: Организация лаб по Pascal
От: cures Россия cures.narod.ru
Дата: 09.09.17 16:06
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>http://unicode.org/


Угу, много букв. А в жизни надо то с регистром, то без регистра, то считая разные представления одним символом, то не считая. Даже с русским языком всё плохо, кто-то "нормализует" галочку над Й в отдельный символ, а кто-то её потом так и рисует справа.

MTD>Не понял, как так? Оно же по определению, ну того


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

MTD>На лабах в институте? Безусловно.


Для вычислений. Можно вспомнить семантику слова "компьютер". А для планктона сморфоны есть, им тот C# без надобности.

MTD>Слушай, ну сморозил ты глупость, зачем же усугублять? Например, данные выгружать/загружать нужно практически любой программе, а для этого надо работать с директориями.


Для этого надо работать с файлами, директории обходить никуда не нужно. В самом няшном варианте откроется диалоговое окно, пользователь там походит, чо надо выберет или создаст — и всё пучком.

MTD>С точки зрения мизантропа, да. Пользователя надо мучить, пусть вообще сам все данные с клавиатуры вводит (vvedite chislo: _) и когда они посчитались архинужной утилитой frexp, которая как раз на лабе пригодилась, записывает с экрана все в свой блокнот (resultat raboti: 100500).


Двоечник так и сделает. А кто ходил на лабы и слушал учителя — запустит ./a.out < input.txt > output.txt, такое даже в винде давно уже есть. А файлы уже текстовым редактором попишет почитает.
Re[12]: Организация лаб по Pascal
От: MTD https://github.com/mtrempoltsev
Дата: 09.09.17 17:59
Оценка:
Здравствуйте, cures, Вы писали:

C>Угу, много букв.


Не осилил? Ну так отдыхай, чего так волнуешься?

C>А в жизни надо то с регистром, то без регистра, то считая разные представления одним символом, то не считая. Даже с русским языком всё плохо, кто-то "нормализует" галочку над Й в отдельный символ, а кто-то её потом так и рисует справа.


Да, надо и все это регламентируется, что противоречит твоему голословному утверждению.

C>Оно, конечно, того. Потому в стандартной библиотеке не впёрлось.


Тебе может и не вперлось, а 99,9% людей это необходимо, так как программа сама в себе никому не интересна.

C>Но в отдельной здоровенной либе кучу до сих пор встречавшихся авторам вариантов почему бы и не заимплементить. Для извращенцев, которым от компьютера нужны не вычисления, а свистелки.


Элементарно вывести информацию на языке пользователя свистелки? А ты жжешь, умничка.

C>Для вычислений. Можно вспомнить семантику слова "компьютер". А для планктона сморфоны есть, им тот C# без надобности.


Ты видимо не в курсе, но компьютер только как калькулятор не используют уже лет 50.

C>Для этого надо работать с файлами, директории обходить никуда не нужно.


Ты бы не позорил себя так — времена CP/M не поддерживающей иерархии файлов давно прошли, ты стало быть застрял в том времени?

MTD>>С точки зрения мизантропа, да. Пользователя надо мучить, пусть вообще сам все данные с клавиатуры вводит (vvedite chislo: _) и когда они посчитались архинужной утилитой frexp, которая как раз на лабе пригодилась, записывает с экрана все в свой блокнот (resultat raboti: 100500).


C>Двоечник так и сделает. А кто ходил на лабы и слушал учителя — запустит ./a.out < input.txt > output.txt, такое даже в винде давно уже есть. А файлы уже текстовым редактором попишет почитает.


Какая разница двоечник или отличник, главное что диагноз я поставил правильно, а ты спорить не стал, стало быть согласился — описываемое тобой уровень студенческих лаб.
Re[10]: Организация лаб по Pascal
От: AleksandrN Россия  
Дата: 09.09.17 20:20
Оценка:
C>Их много. В Golang тоже нет, как и в Rust.

Я на практике циклов с постусловием почти не встречал. Для гарантированного выполнения 1-й итерации чаще встречал другую конструкцию — уловие цикла это флаг, который инициализируется перед циклов в true и меняется в цикле. Но и такая конструкция очень редко встречалась.
Re[11]: Организация лаб по Pascal
От: Cyberax Марс  
Дата: 09.09.17 20:23
Оценка:
Здравствуйте, AlexRK, Вы писали:

C>>Их много. В Golang тоже нет, как и в Rust.

C>>Тогда как в типичных курсах по структурному программированию на это отводят аж несколько лекций.
ARK>Я бы не сказал, что руст уже мейнстрим. Ну и, в любом случае, рассуждать о смерти структурного программирования, мягко говоря, преждевременно.
Ещё про Ruby забыл, там тоже нет.

СП как самостоятельная дисциплина — уже сдохло. Оно просто не покрывает потребностей современного программирования, потому никто на нём на останавливается и не возводит на пьедестал.
Sapienti sat!
Re[12]: Организация лаб по Pascal
От: AleksandrN Россия  
Дата: 09.09.17 20:27
Оценка:
Здравствуйте, cures, Вы писали:

C>Для вычислений. Можно вспомнить семантику слова "компьютер". А для планктона сморфоны есть


Смартфон это компьютер с интегрированным перифирийным устройством "радиотелефон".
Re[12]: Организация лаб по Pascal
От: AleksandrN Россия  
Дата: 09.09.17 20:29
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>СП как самостоятельная дисциплина — уже сдохло.


Как самостоятельная — да, а при использовании совместно с другими подходами — живо.
Re[12]: Организация лаб по Pascal
От: AlexRK  
Дата: 09.09.17 20:40
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Ещё про Ruby забыл, там тоже нет.


В руби есть цикл с постусловием.

C>СП как самостоятельная дисциплина — уже сдохло. Оно просто не покрывает потребностей современного программирования, потому никто на нём на останавливается и не возводит на пьедестал.


СП является базой и составной частью современного императивного программирования. Лично я уверен, что называть это словом "сдохло" — просто неверно. Сдохло гото, а СП "жалеет всех живых".
Re[6]: Организация лаб по Pascal
От: landerhigh Пират  
Дата: 10.09.17 00:48
Оценка: :)
Здравствуйте, pestis, Вы писали:

P>3. После питона брать Scheme/Clojure и учить на них алгоритмам, структурам,


В смысле "все есть список, а кто не все — тоже список"?
www.blinnov.com
Re[13]: Организация лаб по Pascal
От: Cyberax Марс  
Дата: 10.09.17 02:29
Оценка:
Здравствуйте, AlexRK, Вы писали:

C>>Ещё про Ruby забыл, там тоже нет.

ARK>В руби есть цикл с постусловием.
Нету. Предлагается использовать "break if" в конце цикла.

C>>СП как самостоятельная дисциплина — уже сдохло. Оно просто не покрывает потребностей современного программирования, потому никто на нём на останавливается и не возводит на пьедестал.

ARK>СП является базой и составной частью современного императивного программирования.
Одной из, и далеко уже не главной. Но таки почему-то это ставится во главу угла во многих вузах и школах. Как если бы отдельно изучали: "Сложение как основа математики", со специальными учебниками.
Sapienti sat!
Re[14]: Организация лаб по Pascal
От: AlexRK  
Дата: 10.09.17 06:46
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>>>Ещё про Ruby забыл, там тоже нет.

ARK>>В руби есть цикл с постусловием.
C>Нету. Предлагается использовать "break if" в конце цикла.

https://en.wikipedia.org/wiki/Do_while_loop#Ruby

ARK>>СП является базой и составной частью современного императивного программирования.

C>Одной из, и далеко уже не главной. Но таки почему-то это ставится во главу угла во многих вузах и школах. Как если бы отдельно изучали: "Сложение как основа математики", со специальными учебниками.

Даже не знаю, что же может быть главнее базовых примитивов — последовательностей, ветвлений, циклов. Тем более, что это естественные для человеческого мышления вещи, в отличие от комбинирования функций.
Re[12]: Организация лаб по Pascal
От: Michael7 Россия  
Дата: 10.09.17 11:39
Оценка:
Здравствуйте, cures, Вы писали:


MTD>>Слушай, ну сморозил ты глупость, зачем же усугублять? Например, данные выгружать/загружать нужно практически любой программе, а для этого надо работать с директориями.


C>Для этого надо работать с файлами, директории обходить никуда не нужно. В самом няшном варианте откроется диалоговое окно, пользователь там походит, чо надо выберет или создаст — и всё пучком.


Да ё-моё, обход директорий требуется делать чуть ли не в каждой программе вообще. Уж точно, если программа кучу данных обрабатывает.
Абсолютно стандартная ситуация на работе: поступили кучи данных в файлах, их надо как-то обработать и закинуть в другие кучи файлов.
Re[13]: Организация лаб по Pascal
От: cures Россия cures.narod.ru
Дата: 10.09.17 16:35
Оценка:
Здравствуйте, Michael7, Вы писали:

M>Да ё-моё, обход директорий требуется делать чуть ли не в каждой программе вообще. Уж точно, если программа кучу данных обрабатывает.

M>Абсолютно стандартная ситуация на работе: поступили кучи данных в файлах, их надо как-то обработать и закинуть в другие кучи файлов.

Что за кучи? Если файлы между собой никак не связаны и обрабатываются по отдельности, то что мешает вести список этих файлов при поступлении, из которого их потом выбирать? Это удобнее и надёжнее, чем в параллель и накладывать файлы в директории (разные директории — зачем?) и вычитывать их для обработки.
Ну а если взаимосвязаны и открывать надо вместе, то надо заранее знать, кто из них есть who. Тогда снова ничего не надо обходить, у каждого своё заранее известное имя.
Использовать директории в качестве списков обрабатываемых файлов плохо, они для этого не приспособлены. В винде — начинает дико тормозить при большом количестве файлов в папке, а в юниксе в своё время специально делали подпапки по первой букве имени (terminfo), так как тормозило даже не при обходе, а при обращении по известному имени к файлу из туго забитого каталога.
Единственное разумное, что приходит в голову — это утилиты типа ls, ctags, git. Но это довольно редкий кейс, практически системные утилиты, ну или средства разработки. Их пишут специально обученные люди, которые смогут подобрать подходящий язык.
Re[13]: Организация лаб по Pascal
От: cures Россия cures.narod.ru
Дата: 10.09.17 16:57
Оценка:
Здравствуйте, AlexRK, Вы писали:

ARK>Сдохло гото, а СП "жалеет всех живых".


Где это гото, интересно, сдохло? В C/C++ без него толком не организуешь то же СП, или придётся накручивать безумные костыли для выхода или пропуска шага не самого внутреннего цикла. В фортране и паскале здравствует как и раньше, в диезе вполне себе наличествует. В жабе ждёт своего часа (reserved keyword), но жаба — не для скорости. Вот в хипсторских поделках типа пистона его и правда нет, ну так чем бы дитё ни тешилось. В функциональных языках ему неоткуда взяться, парадигма другая, но сколько на них приложений разрабатывается?
Другой вопрос, что некоторые особо упоротые хипсторы, дорвавшиеся до руководства, хейтят его в своих конторах, так злых Буратин никто никогда не отменит.
Re[14]: Организация лаб по Pascal
От: AlexRK  
Дата: 10.09.17 19:38
Оценка: 1 (1) +1
Здравствуйте, cures, Вы писали:

C>Где это гото, интересно, сдохло?


Да почти везде. Заменено как раз структурным программированием. Некоторые его еще применяют, но почти любой код с гото можно переписать без него.

C>В C/C++ без него толком не организуешь то же СП, или придётся накручивать безумные костыли для выхода или пропуска шага не самого внутреннего цикла.


Это говнокод.

C>В фортране и паскале здравствует как и раньше, в диезе вполне себе наличествует.


Гото много где есть, только смысла в нем нет.

C>В жабе ждёт своего часа (reserved keyword)


Ждать будет долго.
Re[5]: Организация лаб по Pascal
От: pestis  
Дата: 11.09.17 04:01
Оценка:
Здравствуйте, AleksandrN, Вы писали:

AN>Здравствуйте, pestis, Вы писали:


P>>Зачем нужно осваивать устарелое структурное программирование если во всей индустрии от него давно отказались?


AN>Структурное программирование состоит из подпрограмм и 3-х управляющих конструкций — последовательность, ветвление, цикл. Уверен, что от этого уже все отказались? Чем заменили?


В душе не представляю что ты называешь "последовательность", а от остального нормальные люди давно отказались. Ветвление сперва заменили на полиморфизм, на чистом ООП if вообще почти не используется, а потом изобрели паттерн матчинг. Циклы сперва заменили на итераторы, а потом на функциональное api для работы с коллекциями. Это уже настолько мейнстрим, что даже в Java есть стримы, а паттерн матчинг вот-вот добавят.
Re[7]: Организация лаб по Pascal
От: pestis  
Дата: 11.09.17 04:05
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>В смысле "все есть список, а кто не все — тоже список"?


В смысле что списки, деревья, графы и прочие структуры нагляднее выглядят на лиспе, чем на си, где студент больше воюет с указателями, чем занимается алгоритмом.
Re[6]: Организация лаб по Pascal
От: AlexRK  
Дата: 11.09.17 06:34
Оценка:
Здравствуйте, pestis, Вы писали:

P>В душе не представляю что ты называешь "последовательность"


Последовательность выполнения операторов. Чтобы "Console.Write("a"); Console.Write("b");" гарантированно вывело "ab". Ну, это как раз то, для чего в хаскеле ввели уродливые костыли.

P>Ветвление сперва заменили на полиморфизм, на чистом ООП if вообще почти не используется


Эээ.... ШО?

Ну скачайте образ самого что ни на есть чистейшего ООП-языка Smalltalk: http://files.squeak.org/5.1/Squeak5.1-16549-64bit/Squeak5.1-16549-64bit.zip
Посмотрите файлик Squeak5.1-16549-64bit.changes и посчитайте, сколько в нем вхождений "ifTrue" и "ifFalse".

P>изобрели паттерн матчинг


Который суть тот же if.

P>Циклы сперва заменили на итераторы, а потом на функциональное api для работы с коллекциями


Можете показать какой-нибудь более-менее крупный проект, в котором нет циклов, а есть одни итераторы и функциональное api для работы с коллекциями?

P>Это уже настолько мейнстрим, что даже в Java есть стримы, а паттерн матчинг вот-вот добавят.


Только вот базовые вещи — ифы и циклы — никто не отменял и не убирал.
Re[14]: Организация лаб по Pascal
От: Michael7 Россия  
Дата: 11.09.17 07:18
Оценка: +1
Здравствуйте, cures, Вы писали:

M>>Да ё-моё, обход директорий требуется делать чуть ли не в каждой программе вообще. Уж точно, если программа кучу данных обрабатывает.

M>>Абсолютно стандартная ситуация на работе: поступили кучи данных в файлах, их надо как-то обработать и закинуть в другие кучи файлов.

C>Что за кучи? Если файлы между собой никак не связаны и обрабатываются по отдельности, то что мешает вести список этих файлов при поступлении, из которого их потом выбирать? Это удобнее и надёжнее, чем в параллель и накладывать файлы в директории (разные директории — зачем?) и вычитывать их для обработки.


Чтобы вести список файлов надо откуда-то узнать, что за файлы лежат, а узнать можно как раз с помощью обхода.
У меня такое ощущение, что вы просто не сталкивались с реальным документооборотом.

Потому что можно как угодно теоретически правильно все спроектировать, а на практике повылезает такое... И отговариваться, что "у меня все правильно, это они идиоты" нельзя, так как нужно, чтобы работало, а кто виноват дело второстепенное. Из того, что я надолго запомнил, хотя было уже лет 15 назад. Не с директориями было связано, но делали базу данных для одной организации и там решили для простоты в качестве первичного ключа в одной из таблиц использовать номер документа, причем по-определению этот номер должен был быть уникальным и казалось, что он и в самом деле уникальный. (Вообще-то в нормальных книгах по БД рекомендуют никогда так не делать, но мы не знали). Догадываетесь, что произошло на практике? Ага, ну теоретически номер и в самом деле был уникальным и возник скандал в руководстве организации, когда мы выявили разные документы с одинаковым номером. Но базу пришлось переделывать.

На практике гораздо проще обходить директории и не придумывать лишнего.

C>Ну а если взаимосвязаны и открывать надо вместе, то надо заранее знать, кто из них есть who. Тогда снова ничего не надо обходить, у каждого своё заранее известное имя.


А если не известно? Если эти файлы поступают из внешних источников и там может быть что угодно? Хотя бы присылают по почте файлы в зазипованных архивах, в том числе с каталогом.

C>Использовать директории в качестве списков обрабатываемых файлов плохо, они для этого не приспособлены. В винде — начинает дико тормозить при большом количестве файлов в папке, а в юниксе в своё время специально делали подпапки по первой букве имени (terminfo), так как тормозило даже не при обходе, а при обращении по известному имени к файлу из туго забитого каталога.


Естественно не надо пихать тысячи файлов в один каталог. Правда насчет юникса замечу, что xfs или ext4 спокойно переносит кучи файлов в каталоге.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.