|
|
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
День добрый! За последнее время все больше убеждаюсь в том, что как-то не на том делаю упор в самообучении. По специальности я не программист, но жизнь заставила. Поэтому все приходится изучать самостоятельно. Но, изучая, Java, Oracle, C++ понял одну вещь. Нужно делать акценты не на конкретике, а на принципах. Т.е. в итоге нужно иметь такое мышление, чтобы язык программирования стал всего лишь удобным инструментом для воплощения задуманного. Исходя из этого есть одна просьба ко всем присутствующим: порекомендуйте, пожалуйста, литературку для формирования соответствующего образа мышления. Ну, может, еще какие-то рекомендации будут. За все, заранее спасибо. с уважением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 10:33 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
Structure and Interpretation of Computer Programs это учебный курс MIT еще мно понравилось по ООП книжка Шлеер, Меллор по метолодогиям книжка алистера коберна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 11:07 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
30+Т.е. в итоге нужно иметь такое мышление, чтобы язык программирования стал всего лишь удобным инструментом для воплощения задуманного. Исходя из этого есть одна просьба ко всем присутствующим: порекомендуйте, пожалуйста, литературку для формирования соответствующего образа мышления. Вы абсолютно правы. Рекомендовать достаточно сложно.... как мне представляется, Вам нужны фундаментальные труды - книги с названиями типа "Алгоритмы" и "Структуры данных", методологические пособия. Конкретно.... конечно, советуя вслепую велика вероятность ошибиться, но я бы посоветовал попробовать "Искусство программирования" Кнута, с первого тома. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 11:22 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
30+Т.е. в итоге нужно иметь такое мышление, чтобы язык программирования стал всего лишь удобным инструментом для воплощения задуманного. Язык программирования - это ничто. Все они, на самом деле, идентичны (SQL - это не язык программирования). А все поведенческие/мировоззренческие модели идут больше из библиотек, и знания общих принципов, принятых в том или ином сообществе. По поводу Java и C++ ничего советовать не буду (тем более, я отчаянный критик их идей и подходов, впрочем, колокольня у меня строго своя, от задач подобранная). А вот по поводу Oracle +/-грамотное мышление даёт: а) вдумчивое прочтение Concepts (полезно данный кирпич прочитать даже в... довольно внятном переводе от РДТЕХ-а, если совсем с нуля, т.е. оригинал штудировать в данном случе - не обязательно). Все что не понял сразу - лучше пометить закладками (не лучше, а обязательно). б) в обязательном порядке прочтение всех изданий некого Томаса Кайта (и никого больше) в) и уже в качестве окончательной доводки и шлифовки п.а и п.б (т.к. концепции - это общее бла-бла-бла и терминология, а Кайт больше бъет по сути практических методов) - чтение Oracle University (эти бьют больше по площадям), причём последние - как общего назначения (тома Dxxxxx), так и мегасуперпуперспециализированного (так называемые DSI - главное, чтоб вот от них крышу не сорвало). д) а потом можно уже и всяким разным баловаться - к примеру - почитать Льюиса по вопросам CBO, отдельно Миллсапа и Хольта (по вопросам общего Perf Tunig-а), ну и так далее, вплоть до http://www.ixora.com.au/resources/ (кстати Oracle 8i Scaling - актуален и абсолютно на заслуженно забытый толмуд) --- Гы, только по Oracle - теория и практика приведения себя в спортивную форму (чисто как DBD) может занять минимум пять-десять лет. Как после этого смотреть на Java и C++ (ресурсы головного мозга - имеют таки ограниченность) - без понятия (многие и не смотрят - EJB и Hibernate - вообще абсолютно безграмотная, с т.з. Oracle RDBMS, хрёнь, и в теории, и в практике, появившаяся исключительно для того, чтобы можно было строгать поделки на коленке, не вникая в п.а) - п.в)). А на практике... каждый практик просто вырабатывает для себя десяток другой паттернов, и строго по ним строит свои решения (не всегда мегаоптимально, но хоть работоспособно, и ладно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 12:16 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
30+ , а кто ты по образованию и специальности? ---------- Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 12:29 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
softwarerРекомендовать достаточно сложно.... как мне представляется, Вам нужны фундаментальные труды - книги с названиями типа "Алгоритмы" и "Структуры данных", методологические пособия. Конкретно.... конечно, советуя вслепую велика вероятность ошибиться, но я бы посоветовал попробовать "Искусство программирования" Кнута, с первого тома. Это полезно только с точки зрения общей образованности, которая, на практике - довольно бесполезна, хоть и является основой (кого сейчас интересуют реализации собственных двусвязных списков, хешей и прочего, если есть уже готовые?) Впрочем, чего греха таить - прочесть это все нужно, вот только Кнут (с его академическими заскоками на изложение материала в виде математической "клинописи"), как мне представляется - далеко не лучший вариант (особенно для самообразования). P.S. Кстати, бытует мнение, что лучшие программисты-разработчики получаются, как правило, отнюдь не из бывших математиков-физиков (больше из гуманитариев, к примеру - лингвистов, либо людей, психо-соматически склонных к данной професии). И более того, с этим мнением - я даже абсолютно согласен (есть ряд практических наблюдений и выводов и на этот счет). Т.е. математическая школа (построенная, как водится, от засилья физико-технических моментов) - и бесполезна, и даже вредна (т.к. прививает несвойственный для computer science базовый аппарат мышления). Т.е. декларативно-описательные моменты vs (что там принято у математиков, особенно в аналитических направлениях)? Но опять же, безусловно - это смотря с какой стороны направлений IT смотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 12:34 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
krvsa 30+ , а кто ты по образованию и специальности? ---------- Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT Первое н/высшее - медицинское. Вовремя понял, что не мое. Второе высшее - радиотехническое. Специальность - проектирование и технология РЭС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 12:41 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
krvsa 30+ , а кто ты по образованию и специальности? ---------- ? К примеру - у меня образование CAПР (CAD/CAM/CAE), специальность - инженер-системотехник(конструктор/технолог/прораммист). Работаю как программист (не совсем по изначальной специальности, больше IS в чистом виде, даже без MES (хоть есть желание)). В бытность математику-физику-теормех... кхм.. с очень большим трудом осиливал (не моё оно, да и учили (и учат) - паршиво, т.е. учат решать задачки с известными условиями (это вторично), а не ставить/видеть решения (это первично при проектировании, особенно в условиях изначельной неопределенности/неполноты описаний)). Зато с удовольствием ходил (будучи уже программистом практиком и даже со стажем) на инженерную графику, теорию машин и механизмов, детали машин и даже сопромат (в части МКЭ). т.е. туда, где были принципы системности и именно - декларативно-описательные модели, как основа. Многое, кстати, почерпнул полезного из "старой школы" (т.е. из общей инженерной деятельности), что в виде аналогий было перепроецированно на IT (к примеру - методы и принципы оптимизации конструкций, метод технологической базы, принципы эргономичности, инжереного дизайна в целом, ну и так, всякое разное). Программированию (как водится) в ВУЗ-е никто серьёзно не учил, не учит, да и не будет учить (нет у нас школы в постсовке, хоть тресни). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 12:43 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
grexhideЭто полезно только с точки зрения общей образованности, которая, на практике - довольно бесполезна, хоть и является основой (кого сейчас интересуют реализации собственных двусвязных списков, хешей и прочего, если есть уже готовые?) Это полезно именно с точки зрения постановки мышления - как подробный пример уже решенных задач, над которыми "лучшие умы" провели более чем достаточное количество времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 12:43 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
grexhide softwarerРекомендовать достаточно сложно.... как мне представляется, Вам нужны фундаментальные труды - книги с названиями типа "Алгоритмы" и "Структуры данных", методологические пособия. Конкретно.... конечно, советуя вслепую велика вероятность ошибиться, но я бы посоветовал попробовать "Искусство программирования" Кнута, с первого тома. Это полезно только с точки зрения общей образованности, которая, на практике - довольно бесполезна, хоть и является основой (кого сейчас интересуют реализации собственных двусвязных списков, хешей и прочего, если есть уже готовые?) Впрочем, чего греха таить - прочесть это все нужно, вот только Кнут (с его академическими заскоками на изложение материала в виде математической "клинописи"), как мне представляется - далеко не лучший вариант (особенно для самообразования). P.S. Кстати, бытует мнение, что лучшие программисты-разработчики получаются, как правило, отнюдь не из бывших математиков-физиков (больше из гуманитариев, к примеру - лингвистов, либо людей, психо-соматически склонных к данной професии). И более того, с этим мнением - я даже абсолютно согласен (есть ряд практических наблюдений и выводов и на этот счет). Т.е. математическая школа (построенная, как водится, от засилья физико-технических моментов) - и бесполезна, и даже вредна (т.к. прививает несвойственный для computer science базовый аппарат мышления). Т.е. декларативно-описательные моменты vs (что там принято у математиков, особенно в аналитических направлениях)? Но опять же, безусловно - это смотря с какой стороны направлений IT смотреть. Неужели совсем беполезна? Недавно, читая учебник по дискретной математике, в разделе описания операций над множествами обнаружил, что эти самые операции я уже применял при составлении запросов в SQL. Это, так, для примера. Но, вообще, хотелось бы знать, к примеру, как составить алгоритм в том или ином случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 12:50 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
softwarer grexhideЭто полезно только с точки зрения общей образованности, которая, на практике - довольно бесполезна, хоть и является основой (кого сейчас интересуют реализации собственных двусвязных списков, хешей и прочего, если есть уже готовые?) Это полезно именно с точки зрения постановки мышления - как подробный пример уже решенных задач, над которыми "лучшие умы" провели более чем достаточное количество времени. Он (Кнут) не даёт системное мышление. IMHО - вообще. Кстати, насчёт системного мышления я бы таки посоветовал OOD Буча (ранние издания, не зашоренные рекламой "рациональной розы"), и... очень даже незаслуженно забытых стариканов Шлеера и Меллора (я в бытность утерял их книжку по OOA, хоть перечитал раз пять, не меньше). Имхо, это (ООА и ООД) куда полезнее, чем старина Кнут (хоть его тоже никто не отменял, но он - излагает только "алгебру"). Опять же, в качестве альтернативы - уметь видеть задачи в целом vs уметь решать частные задачки известными методами (соответственно). P.S. Есть, правда, масса изданий на этот счёт (системный подход) в смежных направлениях (вообще не IT), куда более серьёзных (особенно у архитекторов/строителей). Но советовать не стану (последнее утверждение довольно спорно, да и под рукой у меня их нет, хотя, в период студенчества я читал их в библиотеке - просто взахлеб, как развёрнутое практическое дополнение к принципам ООД и ООА, которые, по сути, ничего то нового в общую инженерию и не внесли). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 12:53 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
30+Первое н/высшее - медицинское. Второе высшее - радиотехническое. Эко тебя метало! Просто меня также интересовал тот факт что у некоторых программирование получается на "ура", у кого-то это титанический труд... А есть те, которые так и не поймут что "тут пора делать цикл"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 12:54 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
30+ Недавно, читая учебник по дискретной математике. Ах, да, извиняюсь, дискретка - это must read в любом случае. Кстати - она вовсе не математика в чистом виде (собственно математического аппарата там очень мало, разве в направлении упрощения логических выражений... которые (упрощения) можно упрощать и графическими методами в т.ч.). Но, кстати, множества, автоматы, логика, графы - это все суть именно - декларативно-описательные модели (а не зашоренно бесполезный матан, которым до потери вменяемости пичкают на специальностях Прикладная математика). Автоматы - так вообще - основа построения компиляторов (т.е. формальных грамматик) - направление лингвистики, по сути (которая бедняга, правда, с живыми языками совладать с его помощью не в состоянии (неподъёмные объёмы конструкций), исключительно по причине неформальности идиоматичности, но это уже лирика, и к IT имеет отношение вон только в направлении автоматического перевода, проверки грамматики и прочего). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 13:00 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
30+Но, вообще, хотелось бы знать, к примеру, как составить алгоритм в том или ином случае. В общем случае это всего три конструкции (Законы алгоритмизации): а) последовательное выполнение б) логическое ветвление в) возврат (цикл) Вот и весь общий случай, все остальное - уже следствия (вариации). Ну и плюс - память - линейный массив и любые вычисления можно сделать сложением и операцией изменения знака (т.е. все IT построенно на машине фон Неймана). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 13:11 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
grexhide 30+Но, вообще, хотелось бы знать, к примеру, как составить алгоритм в том или ином случае. В общем случае это всего три конструкции (Законы алгоритмизации): а) последовательное выполнение б) логическое ветвление в) возврат (цикл) Вот и весь общий случай, все остальное - уже следствия (вариации). Ну и плюс - память - линейный массив и любые вычисления можно сделать сложением и операцией изменения знака (т.е. все IT построенно на машине фон Неймана). Вот, я как раз о том, что "все" программирование построено на каком-то математическо-логическом аппарате, который нужно изучить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 13:25 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
30+Вот, я как раз о том, что "все" программирование построено на каком-то математическо-логическом аппарате, который нужно изучить... Вот еще ссылочга: http://russian.joelonsoftware.com/index.html Как раз по теме мышления программистов (Лорд Палмерстон в программировании, Закон Дырявых Абстракций - обязательны к прочтению, IMHO). Кстати, новые переводы вот здесь: http://local.joelonsoftware.com/mediawiki/index.php/Russian Спольски - один из немногих блогов, которые полезно читать (многое спорно, но пишет он по сути, в отличии от). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 13:48 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
30+Ну, может, еще какие-то рекомендации будут. проект имеет стадийность: анализ, проектирование, реализация, тестирование я бы рекомендовал специализироваться на первых двух. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 14:05 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
Почитайте Гради Бутча. Про основы объектно-ориентированного подхода. Это не столько концепции практики программирования - это помогает понять, что нужно вам/заказчику, разложить на части и классифицировать, выделить общности и т.д. Следуя методам объектно-ориентированного анализа и проектирования можно преодолевать сложность изучаемых и создаваемых систем поэтапно, иерархически. Базовые понятия объектно-ориентированного анализа помогут вам работать с ОО языками не на уровне знания - а на уровне понимания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 14:57 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
30+День добрый! За последнее время все больше убеждаюсь в том, что как-то не на том делаю упор в самообучении. По специальности я не программист, но жизнь заставила. Поэтому все приходится изучать самостоятельно. Но, изучая, Java, Oracle, C++ понял одну вещь. Нужно делать акценты не на конкретике, а на принципах. Т.е. в итоге нужно иметь такое мышление, чтобы язык программирования стал всего лишь удобным инструментом для воплощения задуманного. Исходя из этого есть одна просьба ко всем присутствующим: порекомендуйте, пожалуйста, литературку для формирования соответствующего образа мышления. Ну, может, еще какие-то рекомендации будут. За все, заранее спасибо. с уважением.решайте олимпиадные задачки по информатике + чтиво по алгоритмам, эти вещи сильно голову ломают... хотя имхо надо хотябы склонность к этому иметь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 16:06 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
30+ wrote: > Ну, может, еще какие-то рекомендации будут. В продаже была неплохая книжечка "Жемчужины программирования" - там было несколько очень оригинально решнных задач, может быть полезно. Касательно книг. По-моему, нужный образ мысли можно получить если 1) хорошо изучить два языка высокого уровня. (даст базовые знания) 2) ознакомительно посмотреть ещё 4 или более языков. (даст знания о схожести языков/общих принципах) 3) пообщаться с ассемблером/машиной на низком уровне. (даст знания о том, "как оно работает") 4) Почитать про design patterns. (полезно для ООП мышления, плюс самому до этих идей доходить придется дольше) 5) все это обильно применять на практике пару лет. (закрепить и запомнить) 6) любить программировать. Это долго, но других вариантов не могу посоветовать, хотя они могут существовать. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 16:26 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
Благодарствую! Информации море, теперь буду разбирать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 18:46 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
30+Благодарствую! Информации море, теперь буду разбирать. не надо программирование - фанатам нормальным - жизнь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 21:43 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
30+ Но, изучая, Java, Oracle, C++ понял одну вещь. Нужно делать акценты не на конкретике, а на принципах. Т.е. в итоге нужно иметь такое мышление, чтобы язык программирования стал всего лишь удобным инструментом для воплощения задуманного. то есть, что же надо задумать программировать? мой ответ примерно такой: нужно задумать программу, где было бы побольше юзеров, юзеры бы платили что-то, программа бы и компьютер работали, а ты бы отдыхал это АРМ-Магазин, и интернет-проект, мне так каажется нужно стать провайдером постоянных услуг Лондонская биржа 40% доходов имеет от предоставления информации о ценах, о коньюнктуре нужно понять в какой информации есть потребность и просто стать провайдером этой информации меня в своем АРМ-Магазин на 60тыс.строк SQL кода странным образом кормит всего 1 процесс - работа с прайсами поставщиков - робот сканит интернет каждый час и закачивает новые цены и все видят - Дима ежедневно работает, хотя Дима уже 4 года делает другой интернет-проект, но в том же ключе - провайдер услуг+юзеры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 22:17 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
ve301 то есть, что же надо задумать программировать? Не совсем так... В идеале, мне это видится следующим образом. Заказчик (начальник и т.п.) описывает мне софтину простым человеческим языком. Типа, нужно чтобы софтина делала то-то и то-то и выглядело это (внешне) так-то. Я составляю алгоритм и реализую его, причем делаю это не только на Java (потому что я знаю, скажем, только Java), а на том языке, который больше всего подходит для решения данной задачи (в пределах разумного, естественно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 09:47 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
30+В идеале, мне это видится следующим образом. Заказчик (начальник и т.п.) описывает мне софтину простым человеческим языком. Не-а. Простым человеческим языком - можно только на заборе неприличное слово написать. Если заказчик невменяем, и не может оформить нормальное ТЗ (не говоря уже о Техпроекте) - то нужно нанимать аналитиков и проектировщиков, которые сделают диагностику заказчику, напишут много всякого разного (схем, формул, графиков, табличек-формочек), на что Заказчик посмотрит- и скажет: "О крута (хоть я ничего не понял". Ну а программисты тоже, должны всю эту хрень переварить, сказать свое громкое фи, и сделать так, как считают нужным. И это есть правильно и хорошо. 30+ Типа, нужно чтобы софтина делала то-то и то-то и выглядело это (внешне) так-то. Я составляю алгоритм и реализую его, Фигня полная. Даже Фредерик Брукс (ха, классика - мифический человеко-месяц, тоже, обязательно к прочтению) говорил примерно следущее: - Нафиг мне Ваши алгоритмы, покажите мне Ваши структуры данных (таблицы). И тут он - абсолютно прав. Алгоритм - это ничто, его любой недоученный студент слабает. А вот правильно спроектировать схемы данных - это нужно уметь-с. 30+ причем делаю это не только на Java (потому что я знаю, скажем, только Java), а на том языке, который больше всего подходит для решения данной задачи (в пределах разумного, естественно). Еще раз, для тех кто на бронепоезде (без обид) - язык это ничто. Все определяют библиотеки, фреймворки. Язык это основа. Это лишь средство. То, что ты обладаешь русским языком - не даст тебе возможность написать новую Войну и мир (хоть в мире Java и .NET бытует иное мнение, в известной притче о тысяче кодирующих обезьян). --- Кстати, а про паттерны GoF тебе еще никто не рассказывал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 10:39 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
softwarerРекомендовать достаточно сложно.... как мне представляется, Вам нужны фундаментальные труды - книги с названиями типа "Алгоритмы" и "Структуры данных", методологические пособия. Конкретно.... конечно, советуя вслепую велика вероятность ошибиться, но я бы посоветовал попробовать "Искусство программирования" Кнута, с первого тома. Уважаемый softwarer, а что Вы думаете о книге, например, Л. Константайна "Разработка программного обеспечения" или о книге Э.Д. Брауде "Технология разработки программного обеспечения" или о книге С. Макконнелла "Совершенный код"? Было бы интересно узнать Ваше мнение. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 11:03 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
grexhideНе-а. Простым человеческим языком - можно только на заборе неприличное слово написать. Если заказчик невменяем, и не может оформить нормальное ТЗ (не говоря уже о Техпроекте) - то нужно нанимать аналитиков и проектировщиков, которые сделают диагностику заказчику, напишут много всякого разного (схем, формул, графиков, табличек-формочек), на что Заказчик посмотрит- и скажет: "О крута (хоть я ничего не понял". Ну а программисты тоже, должны всю эту хрень переварить, сказать свое громкое фи, и сделать так, как считают нужным. И это есть правильно и хорошо. grexhide Фигня полная. Даже Фредерик Брукс (ха, классика - мифический человеко-месяц, тоже, обязательно к прочтению) говорил примерно следущее: - Нафиг мне Ваши алгоритмы, покажите мне Ваши структуры данных (таблицы). И тут он - абсолютно прав. Алгоритм - это ничто, его любой недоученный студент слабает. А вот правильно спроектировать схемы данных - это нужно уметь-с. Может быть. Только, в настоящее время, мне приходится учиться работать почти так, как я написал. Т.е. мне, буквально, показывают отчет на бумаге и говорят, что софтина, которую ты пишешь, должна выдавать такой же отчет, только "красивше". Я сам колупаю структуру БД, допетриваю, какие таблицы используются в данном отчете, соображаю, исходя из исходных данных, как получилась та или иная цифирь... Рисую похожую форму и вперед... grexhide Еще раз, для тех кто на бронепоезде (без обид) - язык это ничто. Все определяют библиотеки, фреймворки. Язык это основа. Это лишь средство. Абсолютно согласен!!!! Я же и говорил о том, чтобы выбирать язык под задачи, а не отталкиваться от языка. Вот меня и интересует формирование мозгов так, чтобы можно было "Войну и мир" написать" grexhide Кстати, а про паттерны GoF тебе еще никто не рассказывал? Пока нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 11:19 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
grexhide - Нафиг мне Ваши алгоритмы, покажите мне Ваши структуры данных (таблицы). И тут он - абсолютно прав. Алгоритм - это ничто, его любой недоученный студент слабает. А вот правильно спроектировать схемы данных - это нужно уметь-с. а я бы по другому сказал - нафиг мне ваши структуры данных - покажите форму и юзеров форма определяет структуру данных предложить новую форму старого - вот путь броска конкурента через х%й другое дело что микрософт предлагает новые свои формы вместо своих же старых форм - сама себя зачморила - не вижу в этом смысла - от виста, офиса2007 меня уже чуть не стошнило и причина понятна - приходят менеджеры там на работу им надо делать карьеру - отличаться от предыдущих - вот и делают отличия но к нам то это думаю не имеет отношения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 11:33 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
юзеры определяют форму - форма определяет алгоритм - алгоритм определяет структуру данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 11:39 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
30+Не совсем так... В идеале, мне это видится следующим образом. Заказчик (начальник и т.п.) описывает мне софтину простым человеческим языком. Типа, нужно чтобы софтина делала то-то и то-то и выглядело это (внешне) так-то. Я составляю алгоритм и реализую его, причем делаю это не только на Java (потому что я знаю, скажем, только Java), а на том языке, который больше всего подходит для решения данной задачи (в пределах разумного, естественно). Теперь стало понятнее. Вы хотите освоить полный цикл разработки ПО. Тут действительно нужно двигаться поэтапно, но на детальное изучение всего процесса уйдет лет так несколько. тыцрешайте олимпиадные задачки по информатике + чтиво по алгоритмам, эти вещи сильно голову ломают... хотя имхо надо хотябы склонность к этому иметь... Очень верное замечание в плане развития алгоритмических навыков. Правда, я бы еще усилил требования: взять любую классическую задачу, алгоритмы решения которой уже изъезжены вдоль и поперек, и дополнить чертами из реальной жизни. Например, в задаче Коммивояжера, кроме дальности маршрута можно учитывать и фактор стоимости переездов. Проблема представляется совсем в новом свете! Вообще, думаю, тут больше поможет не теория, а практика. Попробуйте прогнать несколько собственных небольших проектов: сделать ПО, нужное лично вам (например что-то вроде классификатора заметок или менеджера паролей - разумеется, задачи должны быть требуемого уровня). "Узкие места" сами укажут направления дальнейшего совершенствования! grexhideзашоренно бесполезный матан, которым до потери вменяемости пичкают на специальностях Прикладная математика Матан на полную мощность работает в физике. Вот где потребуется весь его аппарат для моделирования реальных процессов. Помню на 2-м курсе в РГР у нас были физические задачки, которые сводились к составлению единственного интегралла и его решению. Причем решить его особого труда не составляло, а вот СОСТАВИТЬ... Тут как раз и требовалось весьма развитое системное мышление! Большинство студентов выло! (Я, кстати, закончил институт как раз по ПМ, и ничуть об этом не жалею). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 11:40 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
30+ grexhide Кстати, а про паттерны GoF тебе еще никто не рассказывал? Пока нет. Паттерны - вещь хорошая, когда необходим плотный диалог рабочих групп, работающих над одним проектом. Если вы работаете один и у вас хороший, технический склад ума, то акцентировать особое внимание на этих буржуазных стандартах не стоит. Многие из паттернов вы применяете не задумываясь. Pool и Singleton я начал использовать даже не зная их названия. Декоратор мы все используем каждый день и повсеместно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 11:55 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
maytonПаттерны - вещь хорошая, когда необходим плотный диалог рабочих групп, работающих над одним проектом. Если вы работаете один и у вас хороший, технический склад ума, то акцентировать особое внимание на этих буржуазных стандартах не стоит. Многие из паттернов вы применяете не задумываясь. Pool и Singleton я начал использовать даже не зная их названия. Декоратор мы все используем каждый день и повсеместно. Поддерживаю. Во всяком случае - совсем не стоит делать из них кумира, тем более, ряд GoF паттернов (к примеру - Immutable, Memento, Flyweight) вообще надерганы яверами, извиняюсь, что волосы из носа (в нормальных языках такого безобразия просто нет). Да и особой там америки нет, в паттернах этих. Впрочем, опять же, только яверы страдают такой хренью, как строгое следование этим лекалам, включая явное участие в именах классов (...Controller, ....Proxy, ...Facade, ...Factory, ...Singleton). Что (последнее лекалирование) - и вовсе признак дурного вкуса и прочего моветона (зачем банальности эти расписывать?) -- Хоть ничего эти GoF не открыли. Просто описали то, что было известно десятки лет назад до них. Но провели классификацю - ну и ладно, спасибо и на этом (лишь бы сильно мозги на заформатировались у кого). Но в любом случае - для прочтения полезно (я вот так все и не осилил - надоело мусолить банальности). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 12:30 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
30+ wrote: > описывает мне софтину простым человеческим языком И в результате по завершению работы выясниться, что вы друг друга не поняли - чувак просил тетрис, а ему сделали базу данных сотрудников. Не прокатит. Пусть пишет не "нормальным" языком, а тем, который не позволяет двусмысленных трактовок требований. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 12:34 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
ve301а я бы по другому сказал - нафиг мне ваши структуры данных - покажите форму и юзеров форма определяет структуру данных Не-а... ответ не верный. Форма определяет лишь форму, но не содержание. Делать содержание только от формы - довольно глупо (вот у меня содержание одно, а форм представления несколько - см. сущность Документы). Хоть даже в общей инженерии это взаимосвязанные процессы, но там больше проблема габаритов, у нас, слава богу, этот вопрос не так актуален (как впихнуть все оборудование в ограничение по весу 2 тонны, ограничение объема - 1 куб.м). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 12:35 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
ErV 30+ wrote: > описывает мне софтину простым человеческим языком И в результате по завершению работы выясниться, что вы друг друга не поняли - чувак просил тетрис, а ему сделали базу данных сотрудников. Не прокатит. Пусть пишет не "нормальным" языком, а тем, который не позволяет двусмысленных трактовок требований. Posted via ActualForum NNTP Server 1.4 Он мне еще и показывает, как это должно выглядеть, соответственно, сложно, в итоге, получить не то, что хотел заказчик. В любом случае, это мои проблемы, а не заказчика... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 13:09 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
grexhide ve301а я бы по другому сказал - нафиг мне ваши структуры данных - покажите форму и юзеров форма определяет структуру данных Не-а... ответ не верный. Форма определяет лишь форму, но не содержание. Делать содержание только от формы - довольно глупо (вот у меня содержание одно, а форм представления несколько - см. сущность Документы). И вот подходим к любопытному аспекту - а где содержание? и что за чудо документы нужны? Есть мнение что нет в программах содержания - содержание, осмысление и польза от информации - это работа юзеров, унифицированный же "содержательный документ" - купюра. то бишь не нужны юзерам сильно "умные программы" - юзерам нужна оперативная инфа от компьютеров, чем "умнее программа" тем меньше у нее юзеров, и тем труднее программисту, разработчики же конвертора мелодии в пиликающие рингтоны мобильника стали миллионэрами, путешествуют по Австралии (http://www.kraynov.com/) и у них совершенно не болит голова ни о чем незаменимый же каждую секунду специалист по Оракле в итоге сам себя законопатит в бункер какого банка и заболеет болезнью легионеров - вот видимо итог ума мораль как бы такова - если на досуге подумать про стек юзеров - это и определит стек технологий, вот и все юзеры смотрят на форму глазами и слушают ушами а победит тот, кто займет руки - руки - вот с чего начался человек (у меня на эту тему есть линк ) я сейчас по крупному делаю ставку на деловых - протягиваю им руку помощи (может дадут на продукты :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 13:49 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
ve301 И вот подходим к любопытному аспекту - а где содержание? и что за чудо документы нужны? Еще раз. Очень просто. Есть документы. Финансовые, к примеру. Платежки, накладные, ордера, счета-фактуры и прочая всякая разная. Ясен пень, все они могут быть основанием для проведения всяческих коррекспонденций в бухгалтерских и не очень учетах. Итого: правильный способ: создать мегасущность, которая содержит все описательные поля всех возможных документов в рамках данной задачи (их там, кстати, не много, полей этих) неправильный способ: хреновертить каждый документ от его формы, каждый раз с удовольствием обсасывая всю необходимую (к примеру триггерную или процедурную) обвязку. каждый раз, для каждого вида документа. Вот против неправильного подхода - форма задаёт содержание - я и был категорически против. На кой каждый раз изобретать один и тот же лисапет, если его можно один раз изобрести, и потом только опции довешивать, по заказам телезрителей, из набора стандартных комплектующих. Подумай. ve301 <бред поскипан, тындекс ужоснах тоже> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 14:07 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
30+Может быть. Только, в настоящее время, мне приходится учиться работать почти так, как я написал. Т.е. мне, буквально, показывают отчет на бумаге и говорят, что софтина, которую ты пишешь, должна выдавать такой же отчет, только "красивше". Я сам колупаю структуру БД, допетриваю, какие таблицы используются в данном отчете, соображаю, исходя из исходных данных, как получилась та или иная цифирь... Рисую похожую форму и вперед...ты это реально делаешь или только представляешь, что делаешь? Я так понимаю, времени у тебя не особо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 16:35 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
maXmo 30+Может быть. Только, в настоящее время, мне приходится учиться работать почти так, как я написал. Т.е. мне, буквально, показывают отчет на бумаге и говорят, что софтина, которую ты пишешь, должна выдавать такой же отчет, только "красивше". Я сам колупаю структуру БД, допетриваю, какие таблицы используются в данном отчете, соображаю, исходя из исходных данных, как получилась та или иная цифирь... Рисую похожую форму и вперед...ты это реально делаешь или только представляешь, что делаешь? Я так понимаю, времени у тебя не особо? Реально делаю... Вышеописанным способом написано уже 9 отчетных программ. Пользователям нравится. Но хотелось бы уйти от чистой отчетности... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 16:46 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
Alex_soldier Например, в задаче Коммивояжера, кроме дальности маршрута можно учитывать и фактор стоимости переездов. Проблема представляется совсем в новом свете! Вообще, думаю, тут больше поможет не теория, а практика. Вроде бы, достаточно просто заменить скалярные аттрибуты рёбер на векторные, ну и ввести в постановку задачи метрику, позволяющую оценивать медленный, но дешёвый путь и быстрый, но дорогой. Алгоритмические изменения незначительны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 16:53 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
30+Реально делаю... Вышеописанным способом написано уже 9 отчетных программ. Пользователям нравится. Но хотелось бы уйти от чистой отчетности... Опять откровение. Для того, чтобы делать отчётные формы - программирование не нужно. Вообще. Я в упор не помню ни одного отчета, который я не смор бы построить с помощью банального SQL и вменяемого репортера (бенд ориентированного - Crystall Reports, Fast Reports, ну и так далее). Не стой стороны копаете, уважаемый (и вообще - репортинг это не программирование... вообще). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 17:10 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
grexhide 30+Реально делаю... Вышеописанным способом написано уже 9 отчетных программ. Пользователям нравится. Но хотелось бы уйти от чистой отчетности... Опять откровение. Для того, чтобы делать отчётные формы - программирование не нужно. Вообще. Я в упор не помню ни одного отчета, который я не смор бы построить с помощью банального SQL и вменяемого репортера (бенд ориентированного - Crystall Reports, Fast Reports, ну и так далее). Не стой стороны копаете, уважаемый (и вообще - репортинг это не программирование... вообще). Вот, поэтому и нужно соответствующие навыки (то о чем я писал в начале), чтоб не всю жизнь отчетами заниматься... Если бы это были отчеты сами по себе, согласен, обошлись бы SQL и jReports, но это (отчеты) часть системы. Т.е. нужен соответствующий GUI, где частенько приходится и компоненты лабать (не только по форме их раскидывать) и данные, получаемые из этих компонентов до помещения их в запрос соответствующим образом обработать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 19:22 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
30+Вот, поэтому и нужно соответствующие навыки (то о чем я писал в начале), чтоб не всю жизнь отчетами заниматься... Если бы это были отчеты сами по себе, согласен, обошлись бы SQL и jReports, но это (отчеты) часть системы. Т.е. нужен соответствующий GUI, где частенько приходится и компоненты лабать (не только по форме их раскидывать) и данные, получаемые из этих компонентов до помещения их в запрос соответствующим образом обработать... У..... как все запущено то. Вообще то есть такой режим: Запрос/просмотр данных/правка. А отчет (любой), по сути не должен требовать никаких дополнительных контролов, а работать от текущего контекста (просмотра). Что запросили, то и получили (хоть как). Генератору отчетов просто передаётся текущий контекст, и не важно, какие фильтры туда наложены (это не отчетово дело - источником данных рулить). Впрочем, озвученный изначально подход (к отчету тулим толпу контролов для фильтрации) вполне себе характеризует яверов (впрочем, не только). Они любители все делать дважды, трижды, четырежды (fine grained part of), размазывая задачу на сотни строк кода и человеко-месяцы там, где... ничего, по большому счету, кодировать не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 21:06 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
Отчет можно в Excel перебросить, предварительно наваяв SQL-запрос, да хоть бы и динамический. Не встречал ни одного вменяемого заказчика (читай - умеющего работать с Excel), который бы потребовал чего-нибудь другого. Кстати, не могу не поблагодарить grexhide за ссылку на новые переводы Джоэля Спольски. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 12:08 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
softwarer я бы посоветовал попробовать "Искусство программирования" Кнута, с первого тома. +1 Когда я начал школьником читать эту книгу и разбирал первый алгоритм MIX- машины (по - моему это было нахождение максимума), я был просто поражен. Я помню свою мысль "Я никогда не смогу научиться ТАК думать" :-) Потом уже в институте пришло понимание. Тут еще ИМХО тот случай, когда мышление не только помогает решать практические задачи, но и обратное влияние работает : решение практических задач развивает мышление - получается такое вращающееся колесо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 12:19 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
grexhide[quot 30+](fine grained part of) Во прицепился-то к фразе. Уже раз десятый встречаю. Пора требовать комисионные :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 15:00 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
grexhide 30+Вот, поэтому и нужно соответствующие навыки (то о чем я писал в начале), чтоб не всю жизнь отчетами заниматься... Если бы это были отчеты сами по себе, согласен, обошлись бы SQL и jReports, но это (отчеты) часть системы. Т.е. нужен соответствующий GUI, где частенько приходится и компоненты лабать (не только по форме их раскидывать) и данные, получаемые из этих компонентов до помещения их в запрос соответствующим образом обработать... У..... как все запущено то. Вообще то есть такой режим: Запрос/просмотр данных/правка. А отчет (любой), по сути не должен требовать никаких дополнительных контролов, а работать от текущего контекста (просмотра). Что запросили, то и получили (хоть как). Генератору отчетов просто передаётся текущий контекст, и не важно, какие фильтры туда наложены (это не отчетово дело - источником данных рулить). Впрочем, озвученный изначально подход (к отчету тулим толпу контролов для фильтрации) вполне себе характеризует яверов (впрочем, не только). Они любители все делать дважды, трижды, четырежды (fine grained part of), размазывая задачу на сотни строк кода и человеко-месяцы там, где... ничего, по большому счету, кодировать не нужно. Проблема в следующем. У одного заказчика стоит Windows у другого Linux. Писать 2 разные системы под разные ОС накладнее. Не вдаваясь в подробности, система пишется взамен старой, к которой пользователь привык. А он привык, что у него отдельный отчет находится в отдельном модуле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 15:11 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
30+Проблема в следующем. У одного заказчика стоит Windows у другого Linux. Писать 2 разные системы под разные ОС накладнее. Не вдаваясь в подробности, система пишется взамен старой, к которой пользователь привык. А он привык, что у него отдельный отчет находится в отдельном модуле.А в чем проблема то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 18:03 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
30+..изучая, Java, Oracle, C++ понял одну вещь. Нужно делать акценты не на конкретике, а на принципах. Т.е. в итоге нужно иметь такое мышление, чтобы язык программирования стал всего лишь удобным инструментом для воплощения задуманного. Исходя из этого есть одна просьба ко всем присутствующим: порекомендуйте, пожалуйста, литературку для формирования соответствующего образа мышления. я советую тебе пообщаться с фанами программистами, причём с фанами - руководителями (организаторами) групп кодеров. Один очень хороший такой человек, который попался мне в универе, очень помог мне. Общаясь с ним я абсолютно никакого уровня существенно его повысил. Причём главное было не технические детали, а его психология (то, как он относиться к поставленной задаче, как её решает). Ему даже не важно, на чём программировать. А этих книг можно перечитать 10-ки, но пользы от них будет куда меньше. ps: главное, что я понял, общаясь с ним - нет ничего невозможного, можно написать практически любую программу. До этого, я не знал этого факта :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 00:20 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
xm?!_(mo3roBa9_akTuBHocTb) главное, что я понял, общаясь с ним - нет ничего невозможного, можно написать практически любую программу. До этого, я не знал этого факта :) неправда, например на данном этапе развития технологии неполучиться написать программу, которая по словестному описанию нарисовала-бы картину с приемлемым качеством изображения (собственно сомневаюсь, что нарисует вообще хоть что-то). И книжки читать на самом деле полезно, хотя-бы что-бы иметь возможность сравнивать, что говорит твой гуру с тем, что по этому поводу думают другие, не менее уважаемые люди ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 17:59 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
heyнеправда, например на данном этапе развития технологии неполучиться написать программу, которая по словестному описанию нарисовала-бы картину с приемлемым качеством изображения (собственно сомневаюсь, что нарисует вообще хоть что-то). Несколько сомневаюсь в истинности этого утверждения. Что есть "приемлимое качество изображения" - вопрос открытый, но подозреваю, сложно скорее "дать достаточно качественное словесное описание". Другой вопрос, который Вы, возможно, имеете в виду - соблюдение некоторых законов гармонии (то есть соответствие результата некоторым критериям качества). Но и тут вопрос скорее в формализации этих законов, нежели в программировании (то есть - не принимается постановка вопроса "нарисуй то, не знаю что, но чтоб гармонично, а это такое - я сам не знаю, но скажу когда увижу"). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 18:06 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
По большому счету имею ввиду, что невозможно написать программу, которая адекватно воспринимала-бы сложные образы человеческого мышления выраженные нашим языком, это имхо из разряда искусственного интеллекта, который обязательно когда-нибудь появиться, но сейчас его пока нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 19:50 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
heyПо большому счету имею ввиду, что невозможно написать программу, которая адекватно воспринимала-бы сложные образы человеческого мышления выраженные нашим языком, это имхо из разряда искусственного интеллекта, который обязательно когда-нибудь появиться, но сейчас его пока нет. Я все же вижу здесь больше проблему формулировки. Практика показывает, что даже в очень простых случаях - вроде разработки логотипов - дать точное словесное описание "того, что стоит перед глазами" весьма трудно, в любом случае процесс будет итерационный ("а теперь поправьте вот это вот так") и в заметной степени таки зависящий от художника, а не от образа, сложившегося у заказчика. Если я, например, представлю себе картину, а потом попытаюсь руководить художником, чтобы он нарисовал "точно и именно это" - да мы с ума сойдем и состаримся прежде чем. То есть - постановка задачи столь неточна, что и человек не справится; это не вина компьютера, это отсутствие у него необходимого хардвера (устройства чтения мыслей :) Восприятие естественного языка - другая задача, с картинами особо не связанная. Для описания картины вполне достаточно более формализованного языка, запрограммировать разбор которого принципиальной проблемой не будет (да, согласен, нетривиально, но в одной из моих любимых книг подобная задача описывалась со вполне разумным решением). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 10:11 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
hey xm?!_(mo3roBa9_akTuBHocTb) главное, что я понял, общаясь с ним - нет ничего невозможного, можно написать практически любую программу. До этого, я не знал этого факта :) неправда, например на данном этапе развития технологии неполучиться написать программу, которая по словестному описанию нарисовала-бы картину с приемлемым качеством изображения (собственно сомневаюсь, что нарисует вообще хоть что-то). И книжки читать на самом деле полезно, хотя-бы что-бы иметь возможность сравнивать, что говорит твой гуру с тем, что по этому поводу думают другие, не менее уважаемые люди Боюсь что мы уходим в глубокую диалектику. Видите-ли в мире человеческих отношений слишком многие понятия воспринимаются контекстно. Например если вас спрашивают - "Время есть?" это можно понять как "Есть ли у вас минута свободного времени?" или "Который час?", если вопрос дополнен соотв. жестом, ситуацией, интонацией и т.п. Искусственный -же (вот ведь слово!) интеллект по определению ограничен в искусственные рамки некого технического устройства, ПК, мобильный телефон, распределённая вычислительная сеть. И эти рамки на самом-то деле сознают баръер... да что там.. пропасть между постановщиком задачи и исполнителем. Печально известная "Элиза" иммитировала интеллект, анализируя окончание предложения и повторяла ассоциативный ряд. Этот на первый взгляд технический приём может ввести в заблуждение и заставить поверить, что вы ведёте общение с человеком. Но при более детальном общении, понимаешь что человек - крайне неотзывчивый идиот и его легко "зациклить". Кроме того, Элиза не читает газет, не следит за новостями шоу-бизнеса. Она вообще владеет знаниями исключительно исторического характера. Человеческое общение настолько сложно и многогранно, что реализацию "рисование картины" по словесному описанию нужно начинать сначала с простейшего понимания того, о чём собственно идёт разговор. Каждый термин. Каждое слово имеет десятки а то и сотни интерпретаций. Второй этап - реализация творческого процесса... Это на мой взгляд задача еще более сложная и непостижимая для AI. Для того, чтобы научить AI создавать шедевры, необходимо "обучить" его по "общечеловеческой программе". Опять круг замыкается! Пропасть между учителем и учеником не даст возможности ученику обучится. Да и вообще ... процесс обучения человека (ребёнка) непостижим и загадочен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 11:37 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
maytonЧеловеческое общение настолько сложно и многогранно, что реализацию "рисование картины" по словесному описанию нужно начинать сначала с простейшего понимания того, о чём собственно идёт разговор. Каждый термин. Каждое слово имеет десятки а то и сотни интерпретаций. И в них совершенно незачем углубляться. Хорошее словесное описание картины вполне укладывается в схему объект - расположение - атрибуты, которая легко может быть задана формализованным языком без проблем анализа и вполне удобно для оператора. При этом мы заранее откажемся рисовать по описаниям вроде "белогривые барашки в небе" или "сосны припушены туманом", но в общем ничего существенного не потеряем (поскольку названное - допустим, красивые литературные образы, но картина, нарисованная по ним человеком, будет далека от картины, сложившейся в мозгу автора). maytonВторой этап - реализация творческого процесса... Это на мой взгляд задача еще более сложная и непостижимая для AI. И опять-таки в него незачем углубляться. "Рисование шедевров" - задача максимально далекая от "нарисовать по описанию". Это все равно, что ожидать шедевров от полицейского художника: может конечно и выйдет, но вообще говоря такой результат не предполагается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 11:44 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
mayton Искусственный -же (вот ведь слово!) интеллект по определению ограничен в искусственные рамки некого технического устройства ... Человеческое общение настолько сложно и многогранно, что реализацию "рисование картины" по словесному описанию нужно начинать сначала с простейшего понимания того, о чём собственно идёт разговор. Каждый термин. Каждое слово имеет десятки а то и сотни интерпретаций я примерно о том-же и говорил о невозможности компьютерам на данный момент понять человеческий язык, хотя есть основания полагать, что эта ситуация может измениться в будущем, ведь работы в этом направлении ведутся, взять те-же нейронные сети, которые способны и к контекстному восприятию информации, и к обучению, и к другим "человеческим" вещам... softwarer Хорошее словесное описание картины вполне укладывается в схему объект - расположение - атрибуты, которая легко может быть задана формализованным языком без проблем анализа и вполне удобно для оператора все-таки речь шла не о формализованном языке :) softwarer Я все же вижу здесь больше проблему формулировки. Практика показывает, что даже в очень простых случаях - вроде разработки логотипов - дать точное словесное описание "того, что стоит перед глазами" весьма трудно, в любом случае процесс будет итерационный ("а теперь поправьте вот это вот так") и в заметной степени таки зависящий от художника, а не от образа, сложившегося у заказчика. Если я, например, представлю себе картину, а потом попытаюсь руководить художником, чтобы он нарисовал "точно и именно это" - да мы с ума сойдем и состаримся прежде чем. То есть - постановка задачи столь неточна, что и человек не справится; это не вина компьютера, это отсутствие у него необходимого хардвера (устройства чтения мыслей :) пожалуй, тут вы сместили акценты. Имхо, это разные вещи - нарисовать что вас попросили, и сформулировать, что вы хотите нарисовать. Если я попрошу нарисовать лес, то нарисовав мне любой лес вы удовлетворите запросу. Если я попрошу нарисовать березовый лес, то вам придется рисовать именно лес из берез. Если я хочу видеть березовый лес, посередине которого стоит большая ветвистая береза с дуплом, из которого выглядывает белка и под которым стоит скамейка - будьте добры следовать этой спецификации. Ну а если я представил какой-то настолько сказочно красивый лес, что не могу выразить это словами - то это мои проблемы, никак не относящиеся к вам. Таким образом, художник просто дополнит недостающие детали (например количество деревьев или облака) исходя из неких своих представлений об окружающей действительности и здравом смысле. При этом он не нарушит спецификацию и качество изображения будет "приемлемым". Приведу еще пример. Вот предположим, я хочу, что-бы вы нарисовали (или хотя-бы представили) фотографию с моего рабочего стола. Достаточно сказать, что изображена поверхность Марса, в нижней части которой видна часть крыла марсохода , увешанная солнечными батареями, в паре метров от которого находиться склон холма, за которым до горизонта тянется пустыня, присыпанная песком красноватого-бурого оттенка и хаотично рассыпанными камнями. Справа вдали виднеется гряда холмов. Этой информации достаточно для вас, чтобы вообразить в общих чертах пейзаж, недостающие детали вы можете добавить сами, не нарушив спецификацию. Но есть одно условие, эти детали вы должны описывать исходя из неких общеизвестных данных, например тот факт, что я не указал цвет камней, хоть с формальной точки зрения и дает вам право представить их ярко-зелеными, но на практике вы изобразите их бурыми. Так вот на мой взгляд тут нет каких-то неразрешимых для компьютера проблем. Таким образом проблема формулировки как раз не кажется мне принципиальной ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 20:12 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
maytonЧеловеческое общение настолько сложно и многогранно, что реализацию "рисование картины" по словесному описанию нужно начинать сначала с простейшего понимания того, о чём собственно идёт разговор. Каждый термин. Каждое слово имеет десятки а то и сотни интерпретаций. Кроме того, не стоит забывать, что в общении (живом) доля невербальных форм (жесты, мимика и прочее) - составляет примерно 90% объема передаваемой информации. Это раз. А два - 60% (если не больше) людей вообще не способны ни к образному, ни к абстрактному мышлению (достаточно спросить даже весьма образованных людей - рисуют ли они визуальный образ в голове при чтении ... книги, статьи). -- Гы, почему то вспомнилось. В начале 90-х годов мы все рубились в такие игры, как Elite, MechWarior, Tie Commander.... при том графика была мегаужастной (320x240 или меньше, никаких текстур). Но воображение - само дорисовывало все необходимые детали (и даже не визуально). Примерно то же происходит и сейчас, при играх (некоторым удаётся запросто симулировать боль (почти реальную), затылочное зрение, и... прочие психоделические моменты). Т.е. человек - это огромная аналоговая машина по переработке информации. Цифровые же девайсы - играют роль сугубо вспомогательную, и будут её играть еще долго (по причине принципиально иной природы и принципа действия, чем физико-химические процессы синапса... говоря проще - не факт, что удастся смоделировать мозг как таковой когда либо). А натягивать аналогии..... а к чему? Мир интересен как раз многообразием комбинаций - синтезирующих (продуцирующих) образы (как элементов знаний или... целых систем). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 20:50 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
softwarer maytonВторой этап - реализация творческого процесса... Это на мой взгляд задача еще более сложная и непостижимая для AI. И опять-таки в него незачем углубляться. "Рисование шедевров" - задача максимально далекая от "нарисовать по описанию". Это все равно, что ожидать шедевров от полицейского художника: может конечно и выйдет, но вообще говоря такой результат не предполагается. А как же фракталы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 20:51 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
heyя примерно о том-же и говорил о невозможности компьютерам на данный момент понять человеческий язык, Вот и давайте правильно ставить задачи. Невозможность понимать человеческий язык во всех тонкостях - согласен. Рисование картин по словесному описанию тут совершенно не при чем. heyвсе-таки речь шла не о формализованном языке Речь шла о "словесном описании". Поверьте, вполне реально составить интерпретатор языка "в достаточной мере человеческого" и превращающего словесное описание в набор формальных команд. heyпожалуй, тут вы сместили акценты. Имхо, это разные вещи - нарисовать что вас попросили, и сформулировать, что вы хотите нарисовать. Ээ.. не очень понял слова "сместили". Я утверждаю следующее: если Вы сумеете хорошо сформулировать, что именно рисовать, то собственно нарисовать - проблемой не будет. heyЕсли я хочу видеть березовый лес, посередине которого стоит большая ветвистая береза с дуплом, из которого выглядывает белка и под которым стоит скамейка - будьте добры следовать этой спецификации. Последую. Это, конечно, достаточно трудоемко для того, чтобы лениться сделать такую программу "на слабо", но уверяю Вас - могу сделать. Смотрите сами, что есть в Вашем описании. В первую очередь объекты - лес, береза, белка, дупло, скамейка. Для того, чтобы человек-художник мог нарисовать по этому описанию - он должен знать и представлять эти слова; так и наша программа должна знать эти объекты и иметь подпрограмму рисования каждого. В описании есть пара атрибутов - большая, ветвистая; это атрибуты объекта, и подпрограмма рисования березы их учитывает. Наконец, задана геометрия - дупло на березе, береза посередине, скамейка под березой. Тоже несложно расставить на холсте. heyНу а если я представил какой-то настолько сказочно красивый лес, что не могу выразить это словами - то это мои проблемы, никак не относящиеся к вам. Именно об этом я и говорю. Проблема "нарисовать по описанию" сводится в основном к проблеме "недостаточно хорошего описания" и к программированию отношения не имеет. heyНо есть одно условие, эти детали вы должны описывать исходя из неких общеизвестных данных, например тот факт, что я не указал цвет камней, хоть с формальной точки зрения и дает вам право представить их ярко-зелеными, но на практике вы изобразите их бурыми. Безусловно. Для того, чтобы "рисовать по описанию", придется заложить уйму информации о различных объектах - той информации, которую мы более-менее осознанно получаем годами из разных источников. Это трудоемко, но чего-то нереального здесь нет. Если бы я реально делал такую программу, полагаю, я бы делал ее интерактивной-самообучающейся. То есть в Вашем примере - она нарисовала бы ярко-зеленые камни, после чего Вы сообщили бы ей "марсианские камни бурые", и она зафиксировала бы этот факт для использования в дальнейшем. heyТак вот на мой взгляд тут нет каких-то неразрешимых для компьютера проблем. Таким образом проблема формулировки как раз не кажется мне принципиальной Ээ.... проблема "хорошо сформулировать" безусловно разрешима. И никаких других принципиальных проблем в "нарисовать по словесному описанию" имхо нет. Я говорю следующее: "принципиальной проблемой" является только и исключительно "нарисовать по плохо сформулированному описанию". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2007, 11:33 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
softwarer Речь шла о "словесном описании". Поверьте, вполне реально составить интерпретатор языка "в достаточной мере человеческого" и превращающего словесное описание в набор формальных команд я разумеется имел ввиду именно описание на человеческом языке, не ожидал, что кто-то сможет это воспринять как "на каком-то формализованном языке". И про рисование там был лишь пример, чего нельзя написать, конечно само по себе рисование нипричем. softwarer Ээ.... проблема "хорошо сформулировать" безусловно разрешима. И никаких других принципиальных проблем в "нарисовать по словесному описанию" имхо нет. с этим, и со всем вышележашим согласен, и более того, я писал о том-же самом. softwarer Я говорю следующее: "принципиальной проблемой" является только и исключительно "нарисовать по плохо сформулированному описанию". а вот что такое "плохо сформулированное описание" тогда не совсем понял. Противоречивое что-ли ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2007, 17:10 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
heyя разумеется имел ввиду именно описание на человеческом языке, не ожидал, что кто-то сможет это воспринять как "на каком-то формализованном языке". Поэтому я и обещаю интерпретацию "вполне человеческого языка". Отказываясь интерпретировать фигуры речи и сложные конструкции, но... скажем, язык, которым пользуется ребенок - согласны считать человеческим? heyа вот что такое "плохо сформулированное описание" тогда не совсем понял. Противоречивое что-ли ? Все, что не является "хорошим". Недостаточно подробное, например. Или то самое "нарисуй то не знаю что". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2007, 17:15 |
|
||
|
Мышление программиста???
|
|||
|---|---|---|---|
|
#18+
softwarer Поэтому я и обещаю интерпретацию "вполне человеческого языка". Отказываясь интерпретировать фигуры речи и сложные конструкции, но... скажем, язык, которым пользуется ребенок - согласны считать человеческим? я не филолог, но имхо даже то, чем пользуется ребенок (старше 3 лет) уже нельзя в данный момент формализовать. Вообщем-то не уверен, что наш язык принципиально невозможно формализовать, но в настоящее время это так. Любой из известных человеческих языков вроде как пока не формализуем (возможно за исключением каких-нибудь индийских диалектов из трех слов), согласны ? softwarer Все, что не является "хорошим". Недостаточно подробное, например. Или то самое "нарисуй то не знаю что". вот тут я вас не понимаю. Насчет подробности описания мы подробно говорили выше и препятствий там не выявили. Понятие "не знаю что" в принципе можно формально считать синонимом "все что угодно" и соответственно нарисовать первое что придет в голову. Единственным препятствием в формулировке возможно будет нелогичность, но в таком случае просто выдаем ошибку и отказываемся рисовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2007, 19:11 |
|
||
|
|

start [/forum/topic.php?all=1&fid=16&tid=1345865]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
184ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 502ms |

| 0 / 0 |
