Программируя – изучаешь и немецкий
Программируя – изучаешь и немецкий
Я имею небольшое представление о программировании, о построении простеньких страниц и даже занимаюсь этим на любительском уровне.
Но оно увлекает, забирает время, и так , что я даже в последнее время забросил изучении немецкого, мне кажется, что я его даже уже и забыл.
Что бы такое делать, чтобы быть и при программировании и при изучении немецкого.
Но вот за что зацепиться? Может за объекты, свойства, признаки? ( существительные, глаголы, прилагательные) А может в немецком есть какие-нибудь алгоритмы?
Да дело не только в программах, далеко не в них, было бы так, я открыл бы тему на соседнем форуме.
Сейчас требуются простенькие странички с интерактивным режимом, А этого совсем нет.
А если и есть, то не годится на мобильных. Должно быть больше игровых страничек, видео, простеньких форумов итд.
У меня есть мысль сделать простенький сайт для семейной пары, изучающих немецкий, что-то в виде форума для двоих, с постепенным привлечением других.
Ну не знаю, там есть проблемы, но не технические, я потом задам здесь вопрос на эту тему.
Дональд Кнут. Искусство программирования
Хорошая книга, особенно была хорошей.
Но какая связь к алгоритмам в иностранных языках, в частности немецком.
Может я не ясно выразился.
Под алгортмами в языках я понимаю алгоритмы машинного перевода, алгоритмы создания простеньких предложений, алгоритмы в грамматике итд.
Под алгортмами в языках я понимаю
-----
Посмотри определение термина - алгоритм - и используй его по назначению.
Что до перевода - объем контекста, необходимый для однозначноной оценки значений слов и выражений, слишком велик. В принципе, ни один человек не владеет им в полном объеме.
А что должно быть на выходе?
Я не понял про какой выход идёт речь.
Если про программу, то есть вопрос:
Составить алгоритм - найти предложение по заданному слову.
То есть есть источник, например текстовый файл.
Задаешь слово и результатом программы является предложение, в котором слово встретилось.
Что бы такое делать, чтобы быть и при программировании и при изучении немецкого.
Но вот за что зацепиться?
Не знаю за что зацепиться. Может потом появится решение. А может кто идею подбросит.
А начну я пока с чтения, работы с книгой.
Взять книгу на немецком, да потолще и загнать её в текстовый файл.
И потом работать с текстом - это и оформление, и распределение по разделам. Наверное понадобятся массивы, таблицы итд.
Подумать как выписать из текста отдельно глаголы, существительные. Иметь возможность сделать анализ найденного. Где-то так проглядывается.
Но вначале надо решить главный вопрос - не нарушу ли я права автора, если я буду работать с его книгой. (ведь появится страница на бесплатном сайте hostinger.ru)
Есть у меня одна книга для чтения - то что надо. Ну а если нельзя , то придётся взять что-то другое. А вот что?
Понятно, что это легкая задача найти все предложения в котором есть заданное слово. Это сделает любая программа.
В крайнем случае - это делают уже и браузеры - открывай страницу и дави клавишу...
Усложним вопрос: определить из текста все глаголы и поместить в базу данных или текстовый файл. Вот здесь, я думаю, одной готовой программой не обойтись, или?
определить из текста все глаголы и поместить в базу данных или текстовый файл.
А как ты собираешься определять глаголы и прочее без базы данных? Я лично сомневаюсь что есть какой программный алгоритм, который бы без базы данных смог бы это определить. Ну разве что есть какое апи от гугла или ещё какого онлайн переводчика, с их базой данных... Имена существительные ещё можно вычислить по признакам "der|die|das" без базы данных всех немецких слов, а остальное сомневаюсь.
А как ты собираешься определять глаголы и прочее без базы данных? Я лично сомневаюсь что есть какой программный алгоритм, который бы без базы данных смог бы это определить.
А я и не говорил, что это делается без базы данных.
Что касается программных алгоритмов, я уверен, что они есть, должны быть и готовые программы, но я их искать не собираюсь. Можно попробовать сделать самим – особенно это полезно делать тем, кто изучает иностранный.
Итак текст книги находится в текстовом файле. С чего начать, чтобы выписать глаголы. Ну конечно не сразу их искать программе, хотя и можно.
Лучше всего отсеять не глаголы. Легко определить существительные – они начинаются с большой буквы. Конечно и глагол может начинаться с заглавной буквы, но это редко – когда он стоит в начале предложения, а это легко определить, если в книге не затерялись знаки препинания. Далее глаголы не могут состоять из 2-3 букв. Ну и наконец в тексте легко определить неизменяющие слова ( в словарной форме) – это наречия, предлоги, союзы, вспомогательные слова итд. Ну и остается там ничего.
Дальше работаем с основами глагола, у многих гаголов своя основа, которая не меняется в тексте, за исключением небольшого количества глаголов, для них хватит небольшой таблицы. Ну где-то так в первом представлении.
Да это понятно, что глупо изучать иностранный прибегая к программированию, да еще специально. Я такое и врагу не посоветую. Но здесь совсем другое. Есть люди, которым через занятие чем-то интересным (мотивацию) поможет закрепить знания или по крайней мере не забыть. Я не вижу ничего странного в этом, знаю случаи когда варят и учат, играют, поют и учат. Ну конечно это не для начинающих и не для сдачи экзаменнов. Вот почему я стараюсь кое-какие любительские работы применять к немецкому, ну не к спичкам же и не приговлению пищи итд
Идея не плохая, но фактор помех очень большой и цели у этих занятий полярные.
Программирование это логика, а я зык это уже совсем другое.
Изучая язык нужно запоминать слова и многое другое.
А при программировании нужно думать как программа будет работать.
Пробуй учиться программированию на немецком. Говоря по совести, самое правильное, на мой взгляд, изучать первоисточники, читать книги в оригинале и официальную документацию, а это конечно не немецкий, а английский. Но если базового англ хватает, можно попробовать на немецком. Как вариант - какой нибудь видео тренинг, благо их нынче хватает. В понимании продвинешься нормально, а чтобы говорить нужна практика. Ничего другое сильно не поможет. Чтобы говорить надо говорить.
Пробуй учиться программированию на немецком.
Это мы уже проходили.
Уже давно не зная практически немецкого я приобрел книги по программированию и старался по ним работать.
Это была глупая затея, а может и нет, не знаю. Много прошло времени пока я начал время от времени пользоваться ими.
Сейчас бы я не повторил этого, вот если бы я изучал английский, вот это было бы отлично - пользоваться первоисточниками на английском.
А вот с изучением Библии в переводе Мартина Лютера могу и похвалиться.
Затея была верная, сразу же не зная немецкого пробовать читать Библию на немецком.
Ну может немного преждевременно. Даже смешно вспомнить - я переводил даже отделяемые приставки глаголов, вспомогательные слова итд.
Но сейчас я читаю Библию и другую религиозную литературу только на немецком, и всё понимаю. Но вот поговорить на эту тему не смогу - не пробовал.
И дело дошло до того, что я Библию на русском не воспринимаю, многие слова чужими кажутся.
Кажется решение найдено как читать книгу на немецком, работать с ней, ну и что-то программировать. Ну может громко сказано "программировать", но другого слова пока не подобрал.
Книга которую я хочу читать состоит из 45 больших глав. Делаю 45 файлов, потом может меньше. Каждая главу разбиваю на 15-20 частей. Вначале как по попало, ну а потом по ходу чтения можно разбить на смысловые блоки.
В файле предусматриваю 15-20 дивов - для каждого смыслового блока свой див. Помещаю файлы на сайт, с возможностью читать и на мобильных, это рисунок слева. Сейчас смотрел на своем смартфоне - нормально читается.
Первая часть работы сделана.
Что касается программы, то уже вижу необходимость базы данных. Каждый файл должен связан с ней. Значит напрашивается использование PHP
В каждом файле простенькая программа, способствующая работе с книгой. И сложным я считаю не составление программы, а придумать что её можно просить сделать.
А ну-ка покажи придаточные предложения, а сейчас мол давай покажи сильное склонение прилагательных итд.
В общем можно побаловаться по ходу чтения книги.
http://remde.esy.es/deutsch/lesen/kap_1.html
Загрузил одну главу из книги Hanns-Josef Ortheil Die Erfindung des Lebens
Эту я книгу уже начинал читать, но как-то сразу забросил, хотя она и интересная.
А вот сейчас решил всё-таки прочесть и не только прочесть и поработать с ней.
Ну а если я собираюсь эту книгу долго и основательно читать, то почему её не использовать и для опробывания кое-чего из программирования.
Загрузил пока как html, но вскоре будет PHP. Загружаю без всякого оформления.
Цель - увидеть как будет выглядеть на смартфоне и попробовать читать содержимое дивов и поработать с текстом - наверное это будет строковая переменная.
Это 17 дивов, значит 17 строк - немного это кажется. На днях попробую.
Составить массив из отдельных предложений.
Очень легко и быстро делается.
Я сейчас пробовал составить массив предложений текста. Никаких проблем - использовал JavaScript.
Разбил строковые переменые (содержимое дивов) на предложения, указав символ точку, по которому и произошло разбиение.
Но разбиение не окончательное, ведь наверное есть немного предложений, окончивающие на восклицательный и вопросительный знаки, могут быть ещё двоеточия.
И даже может встретиться на конце предложения три точки - мол продолжение следует.
Вот здесь надо маленько подумать. У кого есть варианты?
Составить массив слов для каждого предложения.
И это делается легко и быстро.
Опять никаких проблем - опять использовал JavaScript, оттягиваю обязательное использование базы данных и PHP.
Разбил строковые переменые (предложения) на слова, указав символ пробел, по которому и произошло разбиение.
Разбиение на слова не очень четкое - со словами остаются запятые, но это не беда.
Итак в итоге получается многомерный массив:
Книга разбита на главы. Главы разбиты на параграфы. Параграфы разбиты на предложения. Ну и наконец предложения разбиты на слова.
То есть сейчас каждое слово определено, к любому слову можно легко обратиться итд.
Deutsch - объект программирования
Наверное немецкий язык можно считать объектом программирования со своими признаками, свойствами, особенностями итд.
Ну не для JavaScript конечно, а для крутого объектно-ориентированного языка программирования.
Но можно не лезти сразу в такие дебри - ни один язык программирования не поможет, если не изучен объект для программирования.
Вот с этого надо и начать: Что же такое немецкий?
Думаю сделать ещё второй многомерный массив, повторяющий первый.
Но в первом расположены отдельные слова, а во втором будут признаки этих слов, а вот какие, ещё не знаю.
Я не поленился сходил на сайт canoo.net и притащил то, с чего можно начать работать.
Все слова делятся на 2 большие группы: изменяющие(могут изменять) свою форму и не изменяющие (стоят везде как в словаре)
Значит надо иметь массив с количеством ячеек равным количеству слов и поставить туда признак, например символ Fl (изменяющие) или Un(не изменяющие своей формы)
или просто цифры 1 и 2 Это сделать, я думаю, не сложно. Выполнив это, можно двигаться дальше..
Все слова делятся на 2 большие группы: изменяющие(могут изменять) свою форму и не изменяющие (стоят везде как в словаре)
Значит надо иметь массив с количеством ячеек равным количеству слов и поставить туда признак, например символ Fl (изменяющие) или Un(не изменяющие своей формы)
или просто цифры 1 и 2 Это сделать, я думаю, не сложно. Выполнив это, можно двигаться дальше.
Это верно, что не сложно.
Имеем массив всех слов текста и ещё один с количеством ячеек равным количеству слов, в который требуется занести признак, является ли слово изменяемым или нет.
Потребуется ещё один массив со словами, которые являются не изменямыми. В немецком языке их около 3-х тысяч слов, по крайней мере 2-х тысяч хватит.
Ну и всё - программе требуется взять первое слово текста, узнать если такое в массиве неизменяемых слов, если есть, поставить в массив признаков цифру 1, если нет то цифру 2.
Взять второе слово итд, пока не будут просмотрены все слова текста. Несложно, да?
Проблема:
В тексте любой книги есть слова, которые похожи на самостоятельные не изменямые слова, но ими не являются, например это отделяемые приставки глаголов.
Когда читаешь, то видишь что слово является наречием или предлогом, а не приставкой глагола.
Вот здесь надо подумать, что бы и программа могла это понять.
Lassen Sie die Papiere nur auf dem Boden liegen, ich hebe sie schon auf.
Значит надо иметь ещё массив отделяемых приставок глаголов. Слава Богу их не так много.
Ну и ещё понадобится какая-то логика. Если встретилось слово, которое может и самостоятельным словом и отделяемой приставкой глагола,
то программе надо определить какой глагол стоит в предложении, требует ли он приставки ... Человек легко это делает, ну и программа наверное сделает.
Lassen Sie die Papiere nur auf dem Boden liegen, ich hebe sie schon auf.
Оставьте документы только на земле, я уже поднимаю их. )))
Как плохо неверно переводит переводчик с немецкого на русский - не скажу какой, наверное все такие.
Программа неверно переводит слова nur и schon
Поэтому потерян смысл предложения - надо будет это учесть, если до этого продвинусь, но в любом случае эти слова будут в массиве.
Может кому-то будет интересна эта информация. Эти перечни слов легко скачиваются с сайта canoo.net
Их можно оформить в виде таблицы, я делаю и в массиве.
Я думаю, что лишь небольшая часть этих слов используется, но какая?, пусть уж лучше пока все слова остаются.
Определить в тексте существительные и поместить в отдельный массив.
Определить наречия, предлоги, союзы, междометия (неизменяемые слова) нет проблем, имея таблицы, показанные выше.
А с существительными обстоит дело ещё проще. Они начинаются с заглавной буквы, по этому признаку легко их определить.
Но одна проблемка - Все слова в начале предложения начинаются с заглавной буквы. Как быть, кто знает решение?
Es bleiben uns noch zwanzig Minuten bis zur Abfahrt.
Werfen Sie den Bioabfall bitte nicht zum normalen Müll.
Ich hatte keine Ahnung, dass du heute Geburtstag hast.
Die Stadt sollte eine Aktion für Familien planen.
Здесь видно, что любое слово в начале предложения начинается с заглавной буквы.
ПС
Я знаю один вариант. Программе надо определить стоит ли слово в начале предложения( это можно сделать). Если стоит в начале, то надо ей подумать, что за слово это.
У кого какие варианты?
Определить - является ли первое слово предложения существительным.
Количество предложений: 4
К-во слов в предложениях: 36, 19, 12, 37
Требуется определить является ли первое слово предложения существительным или нет.
Сразу определяется, что слова damals, unten относятся к классу Adverbien.
А вот остальные два слова Ein и Ich программа не определит, нужно иметь ещё два массива: Artikel и Pronomen.
Тогда определится, что слово Ein является неопределённым артиклем, а слово Ich личным местоимением.
Итак надо построить два массива: Artikel и Pronomen.
Ну это не сложно. Можно сделать сразу два многомерных массива, согласно классам:
Pronomen Personalpronomen Reflexivpronomen Reziprokpronomen Possessivpronomen Demonstrativpronomen Relativpronomen Interrogativpronomen Indefinitpronomen Pronominaladverbien | Artikel bestimmter Artikel unbestimmter Artikel Demonstrativartikel Possessivartikel Interrogativartikel Indefinitartikel |
Adjektiv Прилагательные
Определить является ли слово текста прилагательным.
В принципе это легко решается, имея массив на большое количество слов, очень уж на большое.
Для каждого прилагательного надо иметь 10 ячеек памяти, ведь помимо свой краткой словарной формы, прилагательные могут выступать и в сравнительной и в превосходной степени и склоняться в зависимости от падежа, и существительного, которое оно сопровождает. Можно уменьшить количество памяти имея лишь словарный запас прилагательных и указав каждому соответствующий признак, но кто бы это подготовил.
Много информации на эту тему, есть всякие списки прилагательных. При желании всё можно найти и составить нужный массив.
Но мне это не требуется, ведь я не делаю универсальную программу, мне бы прочесть книгу и поработать с ней, и иметь задел для чтения следующих книг.
Поэтому с прилагательными я поступлю так: Я не буду собирать массив прилагательных, Я его накоплю из читаемой книги.
Мне всё равно же читать книгу и что мне не кликнуть на слово, которое является прилагательным. Программа определит номер этого слова и в отдельном массиве отметит что слово под номером таким-то является прилагательным. Это легко, ну и кроме того я поработаю с прилагательными. В дальнейшем не всегда надо кликать на прилагательное, это лишь в том случае, если программа не найдёт в накапливаемом массиве это слово.
Это более практичней, а то насобираешь массивы никому не нужных слов.
Составить программу
Держать дивы текста открытыми для редактирования (пока только кликать на слова)
Определить нахождение слова в массиве текста книги.
Занести в ячейку параллельного массива признак, что это слово прилагательное.
В этом массиве уже есть признаки наречий, предлогов, союзов, местоимений, артиклей. Но там делалось программно без всяких кликов на слова.
VBA Копилка Перенос слова(предложения) из одного вордовского файла в другой.
Появилась потребность при чтении текста выделить слово(часть текста) надавить назначенную клавишу, в моем случае(Alt + E) и выделеная часть скопируется в другой вордовский файл.
Следующая выделенная часть скопируется ниже, в общем текст будет накапливаться.
Наверное другой файл, назову его Ergebnis, тоже должен быть открытым в это время.
Делал ли кто подобное? Есть ли готовое стандартное решение? В общем надо составить макро.
теоретически это можно сделать. Даже практически тоже получится .
Проблема в том, что готового решения именно для этого алгоритма нет (во всяком случае мне лично неизвестно ).
нужно будет его самому клепать.
А для этого нужно целую цепочку действий продумать и последовательно организовать.
Просто так хапнуть кусок кода и куда-нибудь его бабахнуть, это не получится.
Куски нужно будет между собой связать.
- Документы нужно открыть или использовать уже открытые (это нужно проверить)
- отследить поисковые критерии
- и провести с выбраным необходимые действия
- док сохранить или закрыть не сохраняя
Вот здесь написано как можно выловить выделенный текст:
http://www.vb-fun.de/cgi-bin/forumarchiv.pl?archiv=0038&ID...
И одновременно немецкий поучить программируя
Да я здесь набросал макро.
Показаны два открытых вордовских файлов. В верхнем я выделяю слово, давлю (ALT + E) и слово копируется во второй файл, со всеми атрибутами.
Можно было бы сразу задать, чтобы они расположились в таблицу.
Сейчас хочется усложнить:
Выделить в тексте слова цетом или ещё как-то и программа сама должна все определить и поместить во второй файл, а то сейчас по одному слову по ходу чтения - давить несколько раз клавишу не хочется.
Вот здесь будет сложней. Не знаю как заставить программу, чтобы она определила все выделенные слова файла.
Не знаю как заставить программу, чтобы она определила все выделенные слова файла.
Уже кажется знаю. Не выделять слова цетом или делать их жирными или ещё как-то, а ставить специальный символ перед словом, например: #выделить слово.
Тогда легко программа выделит все слова, начинающие с этого символа. И разницы нет какая программа это делает - любая сделает.
Ну а сейсас речь идёт о макро.
Я думаю, что она так должна работать: Предоставить программе текст(часть текста). Программа разбивает текст на отдельные слова, потом перебирает их - ищет какое слово начинается с специального символа.
Помещает найденное слово в массив, потом в конце работы помещает эти слова во второй файл вордовский или в текстовый файл .txt
Тогда легко программа выделит все слова, начинающие с этого символа
Сделать можно всё.
нужно просто определиться что и как делать, или как оно должно делаться.
Не обязательно ставить символ перед словом.
В VBA можно прочесать текст на определённый формат, к примеру текст с жёлтым задним фоном или жирный и т.д.
Не обязательно ставить символ перед словом.
В VBA можно прочесать текст на определённый формат, к примеру текст с жёлтым задним фоном или жирный и т.д.
Да, так мы и сделаем. Ну его лишний символ - в VBA он точно не нужен. Попробую использовать определённый формат. Это и наглядней и привычней для ворда.
Может кому-то будет полезна эта информация. Эти перечни глаголов есть на сайте canoo.net и легко скачиваются.
Их можно оформить в виде таблицы. Я их оформлю в виде массива в файле, где хранятся уже и другие классы слов.
Точно знаю, что большая часть слов не пригодится, но нет времени на выбор нужных глаголов - загнать все, а там видно будет.
Эти перечни глаголов есть на сайте canoo.net и легко скачиваются.
Скачать, это дело не сложное.
Но в Германии нужно ещё и обращать внимание на правовые основы
Что можно качать, с какой целью можно использовать, где и как можно размещать.
Особенно нужно обращать внимание на права и лицензии
при размещении чего-то чужого на ресурсах с общественным доступом.
Части предложения Satzglieder
До этого шла речь об частях речи. Ничего сложного нет.
Не трудно составить программу, определяющую к какому классу относится то или иное слово и что с ним надо делать.
А сейчас речь пойдёт о чем-то не реальном, не понятном для меня.
Я бы даже сказал фантастика, если бы не знал, что кругом работают программы, определяющие не только части речи, но и члены предложения.
Мне никогда не составить программу, собирающую из отдельных слов член предложения, но интересно просто, как это делается.
Может что-нибудь попробовать? С чего начать? Или выбросить это из головы и не терять время?
ПС
А можно ещё так: Составлять лишь алгоритмы для программы - это как бы и интересно, подумать над алгоритмом и немецкий поучить.
Думаю на этом и ограничиться, дай Бог это сделать.
Названия членов предложения
Надо уметь выделять в предложении члены предложения, определять какую
функцию в предложении несёт тот или иной член предложения. Вот они члены предложения:
Но они могут быть и сложней - членом сложного предложения может являться и предложение.
И как это всё программе собщить? Здесь бы самому разобраться.
Посмотрим как переведёт эти простые предложения один из лучших эл.переводчиков:
Der Lehrer gibt den Schülern ein Buch. Wir bedürfen eurer Hilfe. Er wartet auf seine Tochter. Er wartet am Bahnhof auf seine Tochter. | Преподаватель дает книгу ученикам. Мы требуем вашу помощь. Он ждет его дочь. Он ждет на вокзале его дочь. |
Я бы по-другому перевёл: Мы нуждаемся в Вашей помощи. Он ждёт свою дочь,
Почему переводчик не смог перевести предложения, например это: Wir bedürfen eurer Hilfe. Что там в программе не работает?
Если бы та же программа сделала бы обратный перевод, то получила бы: Wir fordern Ihre Hilfe, а не Wir bedürfen eurer Hilfe.
Перестановка членов вопросительного предложения.
Хотелось бы, чтобы программа переместила наборы слов в нижележаший див в нужном порядке согласно правилам.
Для этого выбрано очень уж легкое упражнение из DW Deutsch Interaktiv. Легкое для человека, а вот для программы я думаю сложное.
Не знаю смогу ли такое составить, поэтому вначале будет выполнен запасной вариант - выполнить ручками.
Это нетрудно было бы сделать путем перемещения дивов слов мышью на обычном компьютере. А вот на смартфоне?
Придётся кликать в строгой последовательности на дивы-слова, чтобы они перемещались или копировались в нижний див.
Потом надо как-то проверить, правильно ли они выставлены, в нужной ли последовательности.
Не знаю смогу ли я это сделать, так что сразу готов принять помощь и выслушать все советы!
Первый вариант мне смотрится так:
Я дублирую всё. Для каждого дива-слова в задании (верхний див) есть двойники дивы-слова в нижнем диве, диве-ответе.
Но для выполняющего задание они не видны, они будут показываться лишь при правильном выполнении работы.
И тогда будет создаваться видимость перемещения дивов - слов, хотя всё уже готово. Что делать, как давить ещё не знаю.