Хочу освоить программирование
почитай монументальный труд гвиды на 454 страницах
а поконкретнее? ссылка какая-нибудь есть?
Самые первые шаги в изучении программирования наиболее полезно делать вместе с репетитором. При этом, репетитор должен быть не преподавателем университета, а работающим программистом. Иначе есть все шансы изучить то, что было актуально 10-15 лет назад и узнать о способах решения проблем, которых сейчас уже нет.
Ко всему прочему в обязательном порядке надо изучить книжки "Искусство программирования" (Д. Кнут) или "Алгоритмы: построение и анализ" (Кормен, Лейзерсон, Ривест). В противном случае Питон не спасет.
Какова цель и сроки освоения?
сроки освоения?неограничено
цель
на данный момент суметь самомстоятельно сделать мод к одной игрушке и, скорее всего, сайт
но если время на освоение будет, хотелось бы освоить побольше, особенно html
Я бы рекомендовал начать с классических языков, С как идеал, Паскаль, как некоторое приближение к этому идеалу, но попроще, без окунания в логику использования указателей. Как показывает мой опыт, люди не программировавшие раньше, очень плохо понимают, что такое указатели и зачем они нужны.
Что за игра?
Но идею изучать прикладное программирования с питона одобряем-с.
TES4: Oblivion
а конкретные источники, по которым лучше изучать, не подскажешь? кроме уже озвученных в треде
Оо, там по ходу свой скриптовый язык для описания квестов и задания поведения. А так, программирования там особо не будет. Сплошные условные переходы и вызовы внешнего АПИ, имхо
а конкретные источники, по которым лучше изучать, не подскажешь? кроме уже озвученных в тредеОй... я программизм вообще и на бейсике для Спектрума хорошо изучил в школе, по лекциям Марголина Эдуарда Максовича. Это наш школьный препод, вряд ли ты найдешь их в инете.
Потом, после этого изучать С, С++ и прочие языки было не очень сложно, в основном, по мануалам и нескольким книжкам, не лучшим, на самом деле. Например, книжка Подбельского по С++, Моя первая программа на С++. Стандарт Кернигана и Ритчи не самая интересная книжка и изучать язык по ней у меня не получилось. Язык забатывался просто прочтением нескольких книжек, тупым перепечатыванием примеров и их изменением, исполняя проги в дебаггере пошагово, просматривая содержимое переменных. Когда ты можешь сказать, что именно делает каждая строчка в программе, можешь считать, что кое-что понял. После этого заботать паскаль и перл было не сложно, практически то же самое, только синтаксис другой. Теперь я в инете или в хелпах ищу функцию, которая делает то что мне надо.
По-моему, нужно хорошо заботать КАК прогать, а не НА ЧЕМ, т.е. знать несколько стандартных алгоритмов, типа упорядочивания массивов, поиск элемента в упорядоченном массиве методом деления пополам. Не бояться записи х=х+1 и понимать, что она означает.
http://firststeps.ru/ введение в html , плюс там же введение в javascript, который можно выбрать как первый и последний язык программирования.
Как показывает мой опыт, люди не программировавшие раньше, очень плохо понимают, что такое указатели и зачем они нужны.Хочешь его недопрораммером сделать?
Хочешь его недопрораммером сделать?а ты недопрограммер или ты не знаешь, что такое указатели ?
знать и использовать не по назначению — разные вещи
С полезностью освоения его через прочтение официального мана несогласен категорически.Несогласен. Из того, что я читал по питону книга "Г.Россум, Ф.Л.Дж.Дрейк, Д.С.Откидач. Язык программирования питон" была самой ясной.
Сам ман хороший, но он не для тех, кто ни разу не написал Hello World
хз
Если ты книгу называешь маном, то вопрос: ты именно эту книгу читал?
я называл маном "монументальный труд гвиды на 454 страницах".
я называл маном "монументальный труд гвиды на 454 страницах".Я так понял, что говорит именно про "Г.Россум, Ф.Л.Дж.Дрейк, Д.С.Откидач. Язык программирования питон", называя его монументальным трудом гвиды на 454 страницах.
Впрочем, я его не читал и страницы в нем не считал! Конечно же, могу ошибаться!
Возможно, мы тут друг друга немного не понимаем!
Возможно, мы тут друг друга немного не понимаем!Вот это всегда очень неприятно — через 514 страниц флуда обнаружить, что каждый говорит о чем-то своем!
Я так понял, что говорит именно про "Г.Россум, Ф.Л.Дж.Дрейк, Д.С.Откидач. Язык программирования питон", называя его монументальным трудом гвиды на 454 страницах.
Впрочем, я его не читал и страницы в нем не считал! Конечно же, могу ошибаться!
ага, я именно про неё и говорил. Она аккурат на 454 страницах, и никакой это не ман.
http://elib.hackers/books/9194
Тем более что для изучения по-минимуму ничего кроме браузера не надо, хотя лучше конечно использовать что-нибудь для этого предназначенное.
Если есть цель потом еще и сайт сделать, можно смотреть в сторону Flash (там кстати встроенный язык - JavaScript - так что его редактор можно использовать чтобы изучать его).
там кстати встроенный язык - JavaScriptНе Javascript, а ActionScript
можно смотреть в сторону FlashНадо отвернуться от Flash, смотреть нужно на Silverlight
Не Javascript, а ActionScript
... который отличается от Javascript добавлением команд для работы со структурой флэша.
Скажем так, зная один из них, писать на другом проблемы не представляет.
Надо отвернуться от Flash, смотреть нужно на Silverlight
Неужели он реально круче?
Или это ирония?
Неужели он реально круче?Ну это как бы даже другое.
ребята, круче всех си шарп. с каждым днем все больше и больше в этом убеждаюсь
Ребята интересуются, какими языками владеешь в совершенстве?
вообще - паскаль, обджект паскаль, си, с++. си шарп.
все что захочу могу написать на си или на с++, но к сям у меня крайнее отвращение. поэтому пишу все на С#
но большой практики проганья на них не было.
а вот на шарпе уже третий год. наверное можно сказать, что знаю его в совершенстве
Ну, собственно, откуда тогда такая смелая оценка? По сути ты встретил первый относительно высокоуровневый язык, и он тебе понравился. Еще бы. Но ты же не в курсе про еще пяток популярных высокоуровневых языков, а уже делаешь вывод.
от пыхпыха тошнит
а в си шарпе больше привлекает как раз сами платформы - .NET и .NET CF.
реально управляемый код это отличное решение
От пыхпыха многих тошнит. Тут ты не одинок. Но вот честно сравнить джаву и шарп у тебя наверняка не выйдет. А уж о языках, о которых ты вообще не слышал, говорить вообще не о чем.
управляемый с++. эээ. ну добавили пару конструкций к с++ чтобы легче было старые проги переносить. но это все уже потуги. если уж писать управляемый код, то на си шарпе
ну добавили пару конструкций к с++ чтобы легче было старые проги переносить.еще для более простого написания взаимодействия управляемого-неуправляемого кода
www.gamedev.ru в соответсвующем разделе, там же можно найти и сценариста с геймдизом, а так же, если повезет, скетчера (художника). Но вот моделлера ты не найдешь никада! (удар грома с молнией)
Посоветую не начинать учить вообще. Ибо сделать мод для Oblivion в одиночку это нереально, да и совсем не программировать там надо уметь. Программиста легко найти на форуме
Йо, бразе! Нет мира, кроме дотнета, нет бога, кроме билли гейтса? Что ты зациклился на дотнете? ВБ - сакс, управляемые плюсы тут уже тоже опускали. Я совсем о других языках типа. Питоны, руби, перлы, джавы, великие и ужасные пыхпыхи, да еще кучка менее популярных и менее мейнстримовых.
А модельки можно потырить из других модов. Возможно для его мода вообще не нужны нестандартные модельки...
Возможно для его мода вообще не нужны нестандартные модельки...
ага..
только пара сексапильных послушных брюнеток
в сишарпе говорят дженерики круче чем в яве
В джаве не разбирал дженерики, но в шарпе меня они разочаровали: идеи заложены грамотные, но реализованы херова, как и весь сишарп. Уж на громадном опыте С++ и джавы могли бы сделать действительно великолепный язык, а получилась какая-то поебень. Некоторый софт, конечно, на нем удобнее писать, в основном из-за библиотек, но язык по себе получился отстойный
аргументируй мнение
может то была кая-то ранняя и мега сырая версия шарпа?
Йо, бразе! Нет мира, кроме дотнета, нет бога, кроме билли гейтса? Что ты зациклился на дотнете? ВБ - сакс, управляемые плюсы тут уже тоже опускали. Я совсем о других языках типа. Питоны, руби, перлы, джавы, великие и ужасные пыхпыхи, да еще кучка менее популярных и менее мейнстримовых.меня вот еще поражают люди, которые любят поголовно обсирать мелкософт. ну даже если и был у них неудачный проекты винды. да пусть хоть и теперяшняя винда не удачна, это ведь не значит, что все их остальные разработки тоже такие и стоит убить дяду билла. он тут вообще не причем, он только продавать умеет ловко.
дотнет у них очень даже получился, например.вот единственное чего не видел еще, так это руби. а из тех что видел, вышло что рулит все-таки си шарп
Для твоих постов уже давно есть соответствующий .
идиот, он не обсирал, а предлагал сравнить цешарп не с цепепе и вебе, а с другими современными языками, типа петона или руби.
Во-вторых, как ты уже сам заявлял, ты "видел" другие языки. То есть ты их не "знаешь", опыта не "имеешь", реально "изучал" только один современный язык и теперь, как и любой "кулик" просто "хвалишь свое болото". Это действительно смешно. Тебе в "юмор", как тут уже заметили
Речь не о реальном сравнении, а о безапелляционных заявлениях без соответствующих знаний. Растет молодое племя, блин
ну вообще-то когда я не писал, что именно ты обсираешь. а сравниваю я не дотнет языки а дотнет языки не дотнет языки
ну вообще-то когда я не писал, что именно ты обсираешь. а сравниваю я не дотнет языки а дотнет языки не дотнет языкифцетаты, как сказал бы Fj_!
ну вообще-то когда я не писал, что именно ты обсираешь. а сравниваю я не дотнет языки а дотнет языки не дотнет языкисильно сказано
с первого раза не осилил =)
ну вообще-то когда я не писал, что именно ты обсираешь. а сравниваю я не дотнет языки а дотнет языки не дотнет языкивот это да
когдапоржали. молодцы. спасибо.
слово "когда " нужно удалить из фразы.
Ты пишешь менее понятно, чем zavhoz, поздравляю!
сильно сказаносорри. у меня второй день большого недосыпа. вот мысли и пальцы заплетаются
с первого раза не осилил =)
логиниться чтобы иметь возможность править сообщения влом
ну вообще-то когда я не писал, что именно ты обсираешь. а сравниваю я не дотнет языки а дотнет языки не дотнет языкиблин ну и чушь же получилась
в общем надо так:
ну вообще-то я не писал, что именно ты обсираешь. а сравниваю я не "дотнет языки", а "дотнет языки" с "не дотнет языками"
1. Нет деструкторов. Есть жалкое подобие в виде using. Не нужно мне говорить, что в ссылочных языках это непонятно как сделать, т.к. непонятно, когда нужно вызывать деструктор. Его нет и все, а штука очень нужная. В джаве напрягало это очень сильно. Когда услышал, что в шарпе есть деструкторы - даже обрадовался, но когда узнал, что за деструкторы там есть...
2. В шаблонах в where нельзя использовать делегаты, хотя у меня в приложении нужен был именно делегат. Ни в МСДН, ни в какой книге не нашел объяснения, почему так было сделано. Нельзя и все.
3. Еще момент с шаблонами, щас уже деталей не помню, но что-то мне не понравилось с выводом аргументах в шаблонах и специализацией оных (или отсутствием чего-то в этой области). Хотя подобное в С++ было. Да и вообще, как я уже сказал, шаблоны из шарпа не сравнятся шаблонами из плюсов, хотя я думал, что учтут косяки и сделают лучший вариант. Скажем, where - очень хорошая штука, но пункт 2 портит впечатление.
3. Я не гуист, но когда пришлось написать гуевую софтину пришлось потрахаться: как-то не особо интуитивно понятная у гуя библиотека. Может, конечно я нихера не умею, но я попробовал написать небольшое гуевое приложение, которое на джаве (Свинг) (тоже нифига не умея работать с гуем) я наваял за пол дня. Здесь я потрахался подольше.
4. Убогая IDE. Для С++ к студии у меня никаких претензий нет. Это сложный язык, для которого сделать какой-нить рефакторинг и всякие полезные вещи. Но Шарп - простой язык в смысле парсинга и можно сделать хорошую среду для него, но ее нет. После IDEA (для java когда пишешь в студии, то кажется, что набираешь в блокноте.
5. Ожидания: все хвалят этот язык, типа круто, типа великий язык нового поколения, а остальное в утиль. А смотришь на него - недалеко они ушли от джавы. Здесь, правда замечу, что считать в Шарпе файл стало гораздо проще, чем в джаве с ее кучами вложенных ридеров
2. В шаблонах в where нельзя использовать делегаты, хотя у меня в приложении нужен был именно делегат. Ни в МСДН, ни в какой книге не нашел объяснения, почему так было сделано. Нельзя и все.у меня есть подозрение, что есть способ сделать то, что ты хотел, прямее. Покажи код, который ты хотел, чтобы он работал
1. Нет деструкторов. Есть жалкое подобие в виде using. Не нужно мне говорить, что в ссылочных языках это непонятно как сделать, т.к. непонятно, когда нужно вызывать деструктор. Его нет и все, а штука очень нужная. В джаве напрягало это очень сильно. Когда услышал, что в шарпе есть деструкторы - даже обрадовался, но когда узнал, что за деструкторы там есть...using и try/finally очень хорошо заменяют деструкторы. Ты слишком сильно привык к C++, должно быть.
4. Убогая IDE. Для С++ к студии у меня никаких претензий нет. Это сложный язык, для которого сделать какой-нить рефакторинг и всякие полезные вещи. Но Шарп - простой язык в смысле парсинга и можно сделать хорошую среду для него, но ее нет. После IDEA (для java когда пишешь в студии, то кажется, что набираешь в блокноте.Про Resharper, конечно, ты не слышал?
4. Убогая IDE. Для С++ к студии у меня никаких претензий нет. Это сложный язык, для которого сделать какой-нить рефакторинг и всякие полезные вещи. Но Шарп - простой язык в смысле парсинга и можно сделать хорошую среду для него, но ее нет. После IDEA (для java когда пишешь в студии, то кажется, что набираешь в блокноте.Есть плагин к студии под названием Resharper от той же фирмы, что делает IDEA
3. Еще момент с шаблонами, щас уже деталей не помню, но что-то мне не понравилось с выводом аргументах в шаблонах и специализацией оных (или отсутствием чего-то в этой области). Хотя подобное в С++ было. Да и вообще, как я уже сказал, шаблоны из шарпа не сравнятся шаблонами из плюсов, хотя я думал, что учтут косяки и сделают лучший вариант. Скажем, where - очень хорошая штука, но пункт 2 портит впечатление."что-то не понравилось" очень вносят конкретику
3. Я не гуист, но когда пришлось написать гуевую софтину пришлось потрахаться: как-то не особо интуитивно понятная у гуя библиотека. Может, конечно я нихера не умею, но я попробовал написать небольшое гуевое приложение, которое на джаве (Свинг) (тоже нифига не умея работать с гуем) я наваял за пол дня. Здесь я потрахался подольше.а с чем примерно хоть трахался-то? что из себя представляло приложение?
Два. Ты в двух постах вспоминал про управляемый си++ и вижуал бейсик. Нахрена?
Или ты вспомнил ВБ без дотнета вообще? Но уж managed C++ без дотнета вроде вообще не существует, нет?
Короче, ты какой-то непонятный, поздравляю Но все мои выводы о твоих заявлениях остаются в силе. У тебя элементарно нет ни опыта ни знаний, чтобы сравнивать приведенные мной языки.
-Ваш выпад, сударь!
4. Убогая IDE. Для С++ к студии у меня никаких претензий нет. Это сложный язык, для которого сделать какой-нить рефакторинг и всякие полезные вещи. Но Шарп - простой язык в смысле парсинга и можно сделать хорошую среду для него, но ее нет. После IDEA (для java когда пишешь в студии, то кажется, что набираешь в блокноте.опять мне почему-то кажется, что у тебя кривая/совсем старая версия студии...
все отлично там рефакторится и без всяких плагинов. на лету тоже много чего делает. и подсказки выдает, и комментарии твои во всплыающих подсказках отображает.
очень все удобно. какой фичи тебе не хватает? 99% что она в студии все таки есть. может ты умудрился каким-то образом отключить все ее полезные свойства?
Я вообще-то ничего мелкомягкого в данном треде не обсирал. Это раз.вот смотри, после того, как мое заявление относительно крутости си шарпа не прошло без доказательства, я вроде как хочу выбрать побольше современных языков и их сравнить.
Два. Ты в двух постах вспоминал про управляемый си++ и вижуал бейсик. Нахрена?
Или ты вспомнил ВБ без дотнета вообще? Но уж managed C++ без дотнета вроде вообще не существует, нет?
Короче, ты какой-то непонятный, поздравляю Но все мои выводы о твоих заявлениях остаются в силе. У тебя элементарно нет ни опыта ни знаний, чтобы сравнивать приведенные мной языки.
-Ваш выпад, сударь!
вот я и начал вспоминать эти языки. вспоминал-вспоминал. наконец вспомнил и эти языки - другие дотнет языки. и сражу же их отмел так,как си шарп их бесспорно делает (хоть с этим, я надеюсь, никто не будет спорить?) благодаря тому что я их сейчас вспомнил они уже "выбыли из борьбы". круг соперников сузился. всем стало проще выбирать
1. платформа дотнет это очень и очень удобно. стабильно и надежно.
2. когда выбираем из дотнет языков, ясное дело побеждает си шарп
хотя. если сравнить скажем джаву и кривой дотнетовкий с++, я скорее выберу джаву
а в целом моя логика о признании крутости си шарпа такая:си шарп конечно не стал у меня лидером только изза того, что это самый удобный язык для дотнета. он к тому же еще не имеет явных недостатков. если бы они были, то никакой дотнет не скрасил бы горечь программирования
1. платформа дотнет это очень и очень удобно. стабильно и надежно.
2. когда выбираем из дотнет языков, ясное дело побеждает си шарп
цешарп vs иронпетон? для не гуя. не знаю как он присобачен к IronPython.
Разве айронпитон дошел до продакшена?
он к тому же еще не имеет явных недостатков.умиляет.
ты сейчас про какую версию C#? Например, C# 2.0 имеет явные недостатки по сравнению с C# 3.0. А C# 3.0, скорее всего, будет иметь явные недостатки с C# 4.0!
хз, я про языки, а не про глючность
Программист-романтик
ты сейчас про какую версию C#? Например, C# 2.0 имеет явные недостатки по сравнению с C# 3.0. А C# 3.0, скорее всего, будет иметь явные недостатки с C# 4.0!когда была только вторая версия, было очевидно, что третья на подходе. язык появился не так давно, еще не все что заложено и хотели реализовали. и направление развития видно.
если будешь смотреть на третьею, то уже врядли найдешь существенные недостатки (на которые нельзя закрыть глаза) без знакомства с четвертой
вот джава звучала. еще претенденты? *не забываем про уже выбывшие из состязания языки
если будешь смотреть на третьею, то уже врядли найдешь существенные недостатки (на которые нельзя закрыть глаза) без знакомства с четвертойК примеру, слабоватые генерики, о которых тут уже много сказано.
В качестве более удачного варианта можно рассмотреть любой динамически типизированный язык . Из статически типизированных можно посмотреть на Scala.
Алгебраических типов и pattern matching из Nemerle время от времени не хватает.
мне тут из зала подсказывают - Scala
опять зал ответил раньше...
У нас в конторе был семинар на тему: "почему нельзя использовать Scala". Думаю мероприятие было проведено не просто так.
какие были аргументы?
си шарп конечно не стал у меня лидером только изза того, что это самый удобный язык для дотнета. он к тому же еще не имеет явных недостатков. если бы они были, то никакой дотнет не скрасил бы горечь программированияеще поправочка такая: недостаток не считать недостатком, если от него нельзя избавиться, не заимев десяток других недостатков
Нет языка, подходящего для всего сразу наилучшим образом.
Нет языка, подходящего для всего сразу наилучшим образом.Если этого не считать, то, конечно, лучший язык — Ruby.
не знаю, не ходил
Если этого не считать, то, конечно, лучший язык — Ruby.+1
+2
-4
Нет языка, подходящего для всего сразу наилучшим образом.конечно. тут например вообще ни одного ФЯ не представлено.
цель холивара имхо выбрать такой язык, который наиболее сбалансирован, современен, удобен, был бы применим в подавляющем большинстве случаем и вообще, который можно советовать новичку не краснея , (см. название темы).
хотя топикстартеру лучше дейсвительно посоветовать не начинать осваивать программирование вообще - дороже выйдет.
если мало пишите, то почему?
вот для си шарпа я таких приблуд не вижу. то что очень много всякого кода написано на с/с++ - неважно. комбинируйте управляемый и не управляемый код и будем вам счастие (не полное конечно, но все ж таки)
или его использование запрещено законодательствомты матерно кодеришь штоле?
ну это уже шутка была. но ведь может существовать реальные ограничивающие язык факторы, в добавок к тем что я привел, можно дописать глюки/тормознутость и другие недостатки компилятора
те кто голосовали за Ruby, сколько процентов своего кода вы пишите на нем сейчас? (сейчас- понятие относительное, поэтому пускай возьмем статистику за последний год).Мало, потому что в том месте, где я работаю, используются другие языки программирования.
если мало пишите, то почему?
C# у нас используется ровно настолько же, насколько Ruby, или даже меньше.
хорошо. а почему они не прогают на Раби, раз он так хорошь?
Потому что вместо него (на тех задачах, для которых он бы идеально подходил) используется Python.
а как велик весь процент задач, для которых по-твоему лучше всего подходит питон, относительно всей массы возникающих задач?
У нас решаются довольно специфические задачи всё же.
вообще. холивары ведь идут о лучшем языке вообще, а не в узких областях
Не знаю, как оценить.
можешь ли ты уверенно рекомендовать питон, как лучший язык для решения большинства прикладных задач?
или он все же хорош только в той узкой области, в которой сейчас ты его применяешь и в которой с трудом представляешь себе применение других языков
Я могу рекомендовать Python как лучший язык для решения большинства задач, которые я решал. Про большинство прикладных задач я ничего говорить не могу.
Точнее, Ruby, хотя можно и Python.
Как легко ты в цешарпе можешь подхватить stdin, stdout, stderr для выполнения какой-то утилиты?
И я могу питон так отрекомендовать А руби не могу - я же его не знаю, а только видел
Как легко ты в цешарпе можешь подхватить stdin, stdout, stderr для выполнения какой-то утилиты?Это ты уже пошел в узкую область, а чувак рассуждает о высоких материях. Мне интересно, каким образом он придет к выводу, что C# — лучший язык для большинства прикладных задач.
Обычно мне только это и нужно
Решит все прикладные задачи на всех указанных языках и сделает подробный анализ!
если просто вывести/считать, то имеется класс Console
нам доступны Console.In
Console.Out
Conslole.Error - все это - соотвествующие стандартные потоки
Ну, пусть тебе нужно загнать в stdin какую-то последовательность, чтобы затем утилита подхватила её (как | в конвейере) из stdout, а потом получить вывод в stdout или/и stderr.
Ну, мне не просто in-out нужны, а stdin, stdout, stderr именно от исполнения какой-то утилиты.
...
import popen2
outstream, instream = popen2.popen2 ('мегаутилита ожидающая потока из stdin')
haha=['мега', 'поток']
instream.writelines (map (lambda x: x+'\n', haha
instream.close
megaout = outsream.readlines
# что-то делаем
...
т.е. хочешь без шелла сделать конвейер?
вроде того
System.Diagnostics.Process.StartInfo.RedirectStandardInput
ЗЫ 2: вот пример, когда цешарп неудобен.
System.Diagnostics.Process.StartInfo.RedirectStandardInput
Там на каждый чих по килобайту кода нужно хуярить?
ЗЫ 2: вот пример, когда цешарп неудобен.
кроме того длинные имена даже лучше. ибо они понятнее, код лучше читается. а по скорости написания одинаково абсолютно, если использовать всплывающие подсказки
ага, а на темплейтах в цепепе можно написать любую программу
Имена должны быть как можно понятнее, но не длинные. Пример:
from w.library.widgets.select import Select
from w.library.widgets.rich.select import Select as RichSelect
разве стало неясно? А про забывчивость и потенциальный конфликт имен... А нефиг разводить модули по тысячи строк.
Затрахивает читать строчку типа:
tut.tuk.tik.tak.stukachok.stuchit.globalCallback = True
на си шарпе когда прогаешь, как ведь получается - главное найти нужный класс, дальше все очевидно совсем. за пять минут блуждания по подсказкам узнал много нового вообще о запуске процессов и параметрах, которые для этого можно (и нужно) передать.
Удивительно! Где-то, наверное, по-другому!
Напишите кто нибудь наиболее значимые преимущества Ruby перед C#, для общего образования.
он намного лаконичней
Что понимается под прикладным программированием? Под какой осью?теперь моя очередь.
Как легко ты в цешарпе можешь подхватить stdin, stdout, stderr для выполнения какой-то утилиты?
как легко ты можешь в питоне работать с веб-сервисами?
если совсемя тяжело (мало-ли, я питон только краем глаза видел то, на крайняк как просто http-запросики делать?
блин. так не пойдет. дело перерастает похоже в сравнение стандартных библиотек и их удобства. это тоже конечно важно, но не решает.
это все достоинства?
Никаких исходников не осталось, поэтому я и писал, что "что-то" непонравилось, потому что сейчас уже не смогу вспомнить конкретно что
using и try/finally очень хорошо заменяют деструкторы. Ты слишком сильно привык к C++, должно быть.
В свою очередь, могу сказать, что ты слишком мало использовал С++, что тебе эти конструкции ХОРОШО заменяют деструкторы. Да, ими можно заменить деструкторы, но это неудобно
Про Resharper, конечно, ты не слышал?
Вот про это не слышал
опять мне почему-то кажется, что у тебя кривая/совсем старая версия студии...
все отлично там рефакторится и без всяких плагинов. на лету тоже много чего делает. и подсказки выдает, и комментарии твои во всплыающих подсказках отображает.
очень все удобно. какой фичи тебе не хватает? 99% что она в студии все таки есть. может ты умудрился каким-то образом отключить все ее полезные свойства?
Я тоже считал, что студия - офигенная ИДЕ, пока не сел на джаву. Попробуй IDEA и посмотри, изменится ли твое отношение к студии. Или попробуй уже упоминавшийся Решарпер. Я его не видел, но раз его та же компания разрабатывает, думаю будет что-то похожее
Никаких исходников не осталось, поэтому я и писал, что "что-то" непонравилось, потому что сейчас уже не смогу вспомнить конкретно чтоНенавидите кошек? Вы просто не умеете их готовить
хотя. если сравнить скажем джаву и кривой дотнетовкий с++, я скорее выберу джавуА если выбирать джаву и некривой недотнетовский С++ для негуевых приложений?
Ненавидите кошек? Вы просто не умеете их готовитьА я там и не говорил, что я умею их готовить. Я так и сказал: как я не пытался, у меня не получилось. Из-за этого о кошках осталось плохое впечатление
Пока не люблю функциональные языки, но F# похоже так умеет.
А если выбирать джаву и некривой недотнетовский С++ для негуевых приложений?тут я тоже склоняюсь в сторону джавы. но опять же смотря какие приложения.если скажем это будут какие-нибудь численные методы или задачка по типу предлагающихся на acm-контестах, то с++
для всего остального будет джава
Пока не люблю функциональные языки, но F# похоже так умеет.приведённый пример почти полностью императивный
В свою очередь, могу сказать, что ты слишком мало использовал С++, что тебе эти конструкции ХОРОШО заменяют деструкторы. Да, ими можно заменить деструкторы, но это неудобноЯ много использовал C++ и использую сейчас. И на C# тоже писал немало.
Ты, очевидно, на C++ писал много, а на C# — мало, поэтому тебе и кажется, что деструкторы в C++ удобнее. У меня же мнение такое, что функционально using полностью заменяет деструкторы, а вот удобство зависит от ситуации. Бывает, что try/finally (using) существенно удобнее, чем деструктор, а бывает и наоборот.
Предлагаю эту часть спора прекратить, чтобы не устраивать членомерку.
C# — лучший язык для большинства прикладных задач.что такое "большинство прикладных задач"?
как это мерялось? =)
и что тут под "прикладными задачами" понимается?
ну вроде как интуитивно-знакомое всем понятие. границы размыты конечно, но все же так более-менее.
ну вроде как интуитивно-знакомое всем понятие. границы размыты конечно, но все же так более-менее.маладец
как легко ты можешь в питоне работать с веб-сервисами?http://docs.python.org/lib/module-urllib2.html
если совсемя тяжело (мало-ли, я питон только краем глаза видел то, на крайняк как просто http-запросики делать?
что такое "большинство прикладных задач"?Не знаю, потому мне и интересно.
как это мерялось? =)
и что тут под "прикладными задачами" понимается?
как легко ты можешь в питоне работать с веб-сервисами?для веб-сервисов (soap/wsdl) в питоне есть ZSI
но сама идея wsdl/soap настолько не эффективна, что работать с сервисами удовольствия мало
2. В шаблонах в where нельзя использовать делегаты, хотя у меня в приложении нужен был именно делегат. Ни в МСДН, ни в какой книге не нашел объяснения, почему так было сделано. Нельзя и все.+1
у меня есть подозрение, что есть способ сделать то, что ты хотел, прямее. Покажи код, который ты хотел, чтобы он работал
компилятор пишет вот такую ошибку
A type used as a constraint must be an interface, a non-sealed class or a type parameter.
а делегат это типа sealed класс, т.е. от делегата не относледуешься. Тогда зачем его в where указывать?
Не бояться записи х=х+1 и понимать, что она означаети после этого говорят, что гуманитарии много курят
= в данном случае - оператор присвоения. Не обязательно баловаться травой, чтобы понимать различное значение символов в разных областях знаний.
и после этого говорят, что гуманитарии много курят
Это типичный пример того, как путают оператор равенства и оператор присваивания.
Запись абсолютна корректна
и после этого говорят, что гуманитарии много курятпаскаль, только паскаль
class DBHelper
{
static T Get<T>(SqlDataReader reader, int pos)
{
T t; // Это еще одна проблемка, которую смог обойти: нельзя явно написать T is int
if (t is int)
return (T)reader.GetInt32(pos);
else if (t is string)
return (T)reader.GetString(pos);
else
throw new ApplicationException("Unknown type requested");
}
}
Так эта скотина отказывается компилироваться, даже если я его не вызываю нигде: говорит, что не может сконвертить int к T и string к T
if (typeof(T) == typeof(int
Это было не все - просто случайно нажал запостить
Тогда покажи, пожалуйста, весь код
Это весь код - он нигде не вызывается еще, но уже отказывается компилироваться с такими симптомами.
if (typeof(T) == typeof(intНе может получиться так, что при таком подходе чтение 1.000.000 интов из выборки будет занимать просто неприличное время?
Не может получиться так, что при таком подходе чтение 1.000.000 интов из выборки будет занимать просто неприличное время?Это ладно, у меня не сильно огромная база, мне лишь бы заработало
class DBHelper
{
static T Get<T>(SqlDataReader reader, int pos)
{
if (typeof(T) == typeof(int
return (Tobject)reader.GetInt32(pos);
else if (typeof(T) == typeof(string
return (Tobject)reader.GetString(pos);
else
throw new ApplicationException("Unknown type requested");
}
}
Победил эту проблему, правда, как уже было сказано, это тормозно, что пипецВ данном случае лучше делать привязку а-ля Hibernate/ADO - это будет работать лучше и быстрее. Можно даже самому написать атрибуты (аннотации в Java) для объектов, которые ты будешь вытаскивать из БД. Что-нибудь, привязывающее объекты и поля объектов к именам столбцов, возвращённых из запроса. Главное - не забывать кэшировать весь reflection.
надо четко понимать зачем ты используешь generic-и.
class DBHelper
{
static T Get<T>(SqlDataReader reader, int pos)
{
T t; // Это еще одна проблемка, которую смог обойти: нельзя явно написать T is int
if (t is int)
return (T)reader.GetInt32(pos);
else if (t is string)
return (T)reader.GetString(pos);
else
throw new ApplicationException("Unknown type requested");
}
}
generic-и используются для двух вариантов:
1. оптимизация скорости, за счет генерации кода под каждый value-type
2. синтаксический сахар для того, чтобы компилятор проверял типы, а не приходилось их проверять руками.
в данном случае, быстрее у нас станет, если мы заюзаем generic-и? нет не станет, значит это чисто синтаксический сахар.
из этого следуют, что сначала надо написать код, который будет делать всю работу и будет работать без всяких generic-ов, а уже потом поверх него сделать обертку, которая уже будет брать на себя проверку типов.
static Dictionary<Type, Getter<object, SqlDataReader,int>> converters = _.Execute(delegate
{
Dictionary<Type, Getter<object, SqlDataReader,int>> converters = new Dictionary<Type, Getter<object, SqlDataReader,int>>
converters[typeof(int)] = delegate(SqlDataReader reader,int pos){return reader.GetInt32(pos);};
...
return converters;
});
static object Get(Type valueType, SqlDataReader reader, int pos)
{
Getter<object, SqlDataReader,int> converter = _.FindValue(readers, valueType);
if (converter == null)
throw new Exception(string.Format("Тип {0} не поддерживается", valueType;
return converter(reader, pos);
}
надо четко понимать зачем ты используешь generic-и.У меня третий вариант, которого здесь нет.
generic-и используются для двух вариантов:
1. оптимизация скорости, за счет генерации кода под каждый value-type
2. синтаксический сахар для того, чтобы компилятор проверял типы, а не приходилось их проверять руками.
Идея: у меня есть база, в которой дофига таблиц, дофига перекрестных ссылок по этим таблицам, отсутствие каких-либо проверок ссылочной целостности, и не всегда корректные из-за этого данные. Еще у меня есть некоторые "левые" данные. Эти данные нужно распихать по базе. Но нужно сделать это очень аккуратно, чтобы никак не поломать сущесвующую хрень (например, нельзя добавить объект, которого нет в базе, но на которые есть ссылка из-за нарушения целостности базы). Поэтому весь мой код сводится к виду: проверить, что такого объекта еще нет в базе, взять значения полей, проверить, что такие значения ничего не поломают, добавить объект. Аналогично с другим объектом и установкой ссылок между ними.
Из-за этого весь код превращается в такой отстой:
SqlCommand command = GetCommand(sql);
using (SqlDataReader reader = command.ExecuteReader
{
result
while (reader.Read
{
val1 = reader.Getint(0);
val2 = reader.Getint(1);
}
return result;
}
Вот мне и понадобилась некоторая завертка. Например GetList<int>("select value from aaa"); Чтобы не писать для каждого возможного листа, значения, пары значений и других нужных мне вариантов свою реализацию, мне и нужен один метод, который называется для всех типов Get
В общем, это уменьшение количества кода, который нужно написать, удаление дублирования кода
во-вторых, ты generic используешь именно для syntactic sugar
в-третьих, твоя задача решается через пару строк.
T[] GetList<T>(string query)где GetTable, это
{
List<T> items = new List<T>
foreach (DataRow row in GetTable(query).Rows)
{
items.AddT)row[0]);
}
return items.ToArray;
}
public static DataTable GetTableFromAdapter(SqlDataAdapter data)
{
DataTable table = new DataTable;
data.Fill(table);
return table;
}
public static DataTable GetTable (string query, string connection, params SqlParameter[] parameters )
{
using (SqlDataAdapter data = new SqlDataAdapter (query, connection
{
data.SelectCommand.Parameters.AddRange(parameters);
return GetTableFromAdapter(data);
}
}
во-первых, не понятно зачем ты вообще связался с reader-ами, а не с DataTable-амиПотому что другого не знаю - что первое нашел, то и использую.
во-вторых, ты generic используешь именно для syntactic sugarМожет мы с тобой друг-друга не понимаем, но использую их я для другой цели
в-третьих, твоя задача решается через пару строк.После того, как заработала моя мега шаблонная функция решение стало практически аналогичным. Проблема в том, что ДатаРидер нельзя сконвертить так просто, как ты указал в своем коде.
что нельзя сконвертить?
ты писал чо нибудь кроме как под дот нет?
T[] GetList<T>(string query)
{
List<T> items = new List<T>
foreach (DataRow row in GetTable(query).Rows)
{
items.AddT)row[0]);
}
return items.ToArray;
}
У меня получалось почти тоже самое с DataReader. Просто, когда я начал это писать, я незаметил то, что там можно получить Object и пытаться его сконвертить в нужный тип. В таком случае решение получается аналогичным твоему.
В общем, это одноразовая утилита и мне не нужно ее сделать ни быстро, ни красиво - просто нужно, чтобы она заработала. Поэтому вопрос закрыт - я добился того, чего я хотел
Оставить комментарий
Barberian777
Посоветуйте с чего начать. Какие источники заботать (для новичка)!