Хочу освоить программирование

Barberian777

Посоветуйте с чего начать. Какие источники заботать (для новичка)!

Olenenok

петон
почитай монументальный труд гвиды на 454 страницах

Barberian777

а поконкретнее? ссылка какая-нибудь есть?

Helga87

c тем, что питон хорош как первый язык — согласен. С полезностью освоения его через прочтение официального мана несогласен категорически.
Самые первые шаги в изучении программирования наиболее полезно делать вместе с репетитором. При этом, репетитор должен быть не преподавателем университета, а работающим программистом. Иначе есть все шансы изучить то, что было актуально 10-15 лет назад и узнать о способах решения проблем, которых сейчас уже нет.

Oper

Ко всему прочему в обязательном порядке надо изучить книжки "Искусство программирования" (Д. Кнут) или "Алгоритмы: построение и анализ" (Кормен, Лейзерсон, Ривест). В противном случае Питон не спасет.

timefim

Какова цель и сроки освоения?

Barberian777

сроки освоения?
неограничено
цель

на данный момент суметь самомстоятельно сделать мод к одной игрушке и, скорее всего, сайт
но если время на освоение будет, хотелось бы освоить побольше, особенно html

Elina74

Я бы рекомендовал начать с классических языков, С как идеал, Паскаль, как некоторое приближение к этому идеалу, но попроще, без окунания в логику использования указателей. Как показывает мой опыт, люди не программировавшие раньше, очень плохо понимают, что такое указатели и зачем они нужны.

timefim

Да, без 4х томов Кнута тут не обойтись. :LOL1:
Что за игра?

tipnote

Ну, для сайта питон нормально подойдет, а вот для гамы тебе придется плюсы ботать, видимо, в дальнейшем, ну если игра - не цивка :)
Но идею изучать прикладное программирования с питона одобряем-с.

Barberian777

TES4: Oblivion

Barberian777

а конкретные источники, по которым лучше изучать, не подскажешь? кроме уже озвученных в треде

tipnote

Оо, там по ходу свой скриптовый язык для описания квестов и задания поведения. А так, программирования там особо не будет. Сплошные условные переходы и вызовы внешнего АПИ, имхо :)

Elina74

а конкретные источники, по которым лучше изучать, не подскажешь? кроме уже озвученных в треде
Ой... я программизм вообще и на бейсике для Спектрума хорошо изучил в школе, по лекциям Марголина Эдуарда Максовича. Это наш школьный препод, вряд ли ты найдешь их в инете.
Потом, после этого изучать С, С++ и прочие языки было не очень сложно, в основном, по мануалам и нескольким книжкам, не лучшим, на самом деле. Например, книжка Подбельского по С++, Моя первая программа на С++. Стандарт Кернигана и Ритчи не самая интересная книжка и изучать язык по ней у меня не получилось. Язык забатывался просто прочтением нескольких книжек, тупым перепечатыванием примеров и их изменением, исполняя проги в дебаггере пошагово, просматривая содержимое переменных. Когда ты можешь сказать, что именно делает каждая строчка в программе, можешь считать, что кое-что понял. После этого заботать паскаль и перл было не сложно, практически то же самое, только синтаксис другой. Теперь я в инете или в хелпах ищу функцию, которая делает то что мне надо.
По-моему, нужно хорошо заботать КАК прогать, а не НА ЧЕМ, т.е. знать несколько стандартных алгоритмов, типа упорядочивания массивов, поиск элемента в упорядоченном массиве методом деления пополам. Не бояться записи х=х+1 и понимать, что она означает.

timefim

http://firststeps.ru/ введение в html , плюс там же введение в javascript, который можно выбрать как первый и последний язык программирования. :)

Werdna

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

Oper

Хочешь его недопрораммером сделать?
а ты недопрограммер или ты не знаешь, что такое указатели ? :shocked:
знать и использовать не по назначению — разные вещи

Olenenok

С полезностью освоения его через прочтение официального мана несогласен категорически.
Несогласен. Из того, что я читал по питону книга "Г.Россум, Ф.Л.Дж.Дрейк, Д.С.Откидач. Язык программирования питон" была самой ясной.

Helga87

Это была твоя первая книга по программированию?
Сам ман хороший, но он не для тех, кто ни разу не написал Hello World

Olenenok

хз

nikita270601

Вроде предлагают не по ману, а по книге, нет?
Если ты книгу называешь маном, то вопрос: ты именно эту книгу читал?

Helga87

я называл маном "монументальный труд гвиды на 454 страницах".

nikita270601

я называл маном "монументальный труд гвиды на 454 страницах".
Я так понял, что говорит именно про "Г.Россум, Ф.Л.Дж.Дрейк, Д.С.Откидач. Язык программирования питон", называя его монументальным трудом гвиды на 454 страницах.
Впрочем, я его не читал и страницы в нем не считал! Конечно же, могу ошибаться!

Helga87

Возможно, мы тут друг друга немного не понимаем!

nikita270601

Возможно, мы тут друг друга немного не понимаем!
Вот это всегда очень неприятно — через 514 страниц флуда обнаружить, что каждый говорит о чем-то своем!

Olenenok

Я так понял, что говорит именно про "Г.Россум, Ф.Л.Дж.Дрейк, Д.С.Откидач. Язык программирования питон", называя его монументальным трудом гвиды на 454 страницах.
Впрочем, я его не читал и страницы в нем не считал! Конечно же, могу ошибаться!

ага, я именно про неё и говорил. Она аккурат на 454 страницах, и никакой это не ман.
http://elib.hackers/books/9194

durka82

В меня сейчас будут кидаться камнями, но для этой цели можно начинать изучать программирование с JavaScript (подозреваю, что в TES4: Oblivion встроенный язык очень на него похож).
Тем более что для изучения по-минимуму ничего кроме браузера не надо, хотя лучше конечно использовать что-нибудь для этого предназначенное.
Если есть цель потом еще и сайт сделать, можно смотреть в сторону Flash (там кстати встроенный язык - JavaScript - так что его редактор можно использовать чтобы изучать его).

kruzer25

там кстати встроенный язык - JavaScript
Не Javascript, а ActionScript
можно смотреть в сторону Flash
Надо отвернуться от Flash, смотреть нужно на Silverlight ;)

durka82

Не Javascript, а ActionScript

... который отличается от Javascript добавлением команд для работы со структурой флэша.
Скажем так, зная один из них, писать на другом проблемы не представляет.
Надо отвернуться от Flash, смотреть нужно на Silverlight

Неужели он реально круче?
Или это ирония?

kruzer25

Неужели он реально круче?
Ну это как бы даже другое.

nvm77rus

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

tipnote

Ребята интересуются, какими языками владеешь в совершенстве?

nvm77rus

в совершенстве никакими.
вообще - паскаль, обджект паскаль, си, с++. си шарп.
все что захочу могу написать на си или на с++, но к сям у меня крайнее отвращение. поэтому пишу все на С#

nvm77rus

с/с++ в рамках университетского курса (ВМиК)
но большой практики проганья на них не было.
а вот на шарпе уже третий год. наверное можно сказать, что знаю его в совершенстве

tipnote

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

nvm77rus

c джавой и пыхпыхом тоже знаком.
от пыхпыха тошнит

nvm77rus

Визуал бейсик не нравится из-за неудобного синтаксиса
а в си шарпе больше привлекает как раз сами платформы - .NET и .NET CF.
реально управляемый код это отличное решение

tipnote

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

nvm77rus

в принципе все что я сейчас пишу на си шарпе можно практически точно также переписать на ВБ (один хрен ибо .NET но у него си шарп выигрывает своим удобством
управляемый с++. эээ. ну добавили пару конструкций к с++ чтобы легче было старые проги переносить. но это все уже потуги. если уж писать управляемый код, то на си шарпе

FRider

ну добавили пару конструкций к с++ чтобы легче было старые проги переносить.
еще для более простого написания взаимодействия управляемого-неуправляемого кода

0000

Посоветую не начинать учить вообще. Ибо сделать мод для Oblivion в одиночку это нереально, да и совсем не программировать там надо уметь. Программиста легко найти на форуме www.gamedev.ru в соответсвующем разделе, там же можно найти и сценариста с геймдизом, а так же, если повезет, скетчера (художника). Но вот моделлера ты не найдешь никада! (удар грома с молнией)

apl13

:lol:

tipnote

Йо, бразе! Нет мира, кроме дотнета, нет бога, кроме билли гейтса? Что ты зациклился на дотнете? ВБ - сакс, управляемые плюсы тут уже тоже опускали. Я совсем о других языках типа. Питоны, руби, перлы, джавы, великие и ужасные пыхпыхи, да еще кучка менее популярных и менее мейнстримовых.

tipnote

А модельки можно потырить из других модов. Возможно для его мода вообще не нужны нестандартные модельки...

zya369

Возможно для его мода вообще не нужны нестандартные модельки...

ага..
только пара сексапильных послушных брюнеток :grin:

6yrop

в сишарпе говорят дженерики круче чем в яве :p

agent007new

В джаве не разбирал дженерики, но в шарпе меня они разочаровали: идеи заложены грамотные, но реализованы херова, как и весь сишарп. Уж на громадном опыте С++ и джавы могли бы сделать действительно великолепный язык, а получилась какая-то поебень. Некоторый софт, конечно, на нем удобнее писать, в основном из-за библиотек, но язык по себе получился отстойный

Helga87

аргументируй мнение

nvm77rus

факты в студию! (в визуал студию конечно же :) )
может то была кая-то ранняя и мега сырая версия шарпа?

nvm77rus

Йо, бразе! Нет мира, кроме дотнета, нет бога, кроме билли гейтса? Что ты зациклился на дотнете? ВБ - сакс, управляемые плюсы тут уже тоже опускали. Я совсем о других языках типа. Питоны, руби, перлы, джавы, великие и ужасные пыхпыхи, да еще кучка менее популярных и менее мейнстримовых.
меня вот еще поражают люди, которые любят поголовно обсирать мелкософт. ну даже если и был у них неудачный проекты винды. да пусть хоть и теперяшняя винда не удачна, это ведь не значит, что все их остальные разработки тоже такие и стоит убить дяду билла. он тут вообще не причем, он только продавать умеет ловко.
дотнет у них очень даже получился, например.вот единственное чего не видел еще, так это руби. а из тех что видел, вышло что рулит все-таки си шарп

nikita270601

Для твоих постов уже давно есть соответствующий .

Olenenok

идиот, он не обсирал, а предлагал сравнить цешарп не с цепепе и вебе, а с другими современными языками, типа петона или руби.

tipnote

Во-первых, я не обсирал, а указал лишь на то, что ты зациклился на сравнении дотнет языков.
Во-вторых, как ты уже сам заявлял, ты "видел" другие языки. То есть ты их не "знаешь", опыта не "имеешь", реально "изучал" только один современный язык и теперь, как и любой "кулик" просто "хвалишь свое болото". Это действительно смешно. Тебе в "юмор", как тут уже заметили :p

tipnote

Говорят, один годовалый джавист легко поломает двух полугодовалых шарпистов :p :D
Речь не о реальном сравнении, а о безапелляционных заявлениях без соответствующих знаний. Растет молодое племя, блин :(

nvm77rus

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

nikita270601

ну вообще-то когда я не писал, что именно ты обсираешь. а сравниваю я не дотнет языки а дотнет языки не дотнет языки
фцетаты, как сказал бы Fj_!

myrka68

ну вообще-то когда я не писал, что именно ты обсираешь. а сравниваю я не дотнет языки а дотнет языки не дотнет языки
сильно сказано
с первого раза не осилил =)

salora

ну вообще-то когда я не писал, что именно ты обсираешь. а сравниваю я не дотнет языки а дотнет языки не дотнет языки
вот это да

nvm77rus

когда
поржали. молодцы. спасибо.
слово "когда " нужно удалить из фразы.

nikita270601

а запятые нигде не надо поставить? :)
Ты пишешь менее понятно, чем zavhoz, поздравляю!

nvm77rus

сильно сказано
с первого раза не осилил =)
сорри. у меня второй день большого недосыпа. вот мысли и пальцы заплетаются
логиниться чтобы иметь возможность править сообщения влом :)

nvm77rus

ну вообще-то когда я не писал, что именно ты обсираешь. а сравниваю я не дотнет языки а дотнет языки не дотнет языки
блин ну и чушь же получилась
в общем надо так:
ну вообще-то я не писал, что именно ты обсираешь. а сравниваю я не "дотнет языки", а "дотнет языки" с "не дотнет языками"

agent007new

Версия была не самая древняя: с шарпом я столкнулся этим летом (по-моему дот нет 2.0 был). Нужно было написать некоторую гуевую софтину. Всех мелочей уже не помню, но вот что мне не понравилось:
1. Нет деструкторов. Есть жалкое подобие в виде using. Не нужно мне говорить, что в ссылочных языках это непонятно как сделать, т.к. непонятно, когда нужно вызывать деструктор. Его нет и все, а штука очень нужная. В джаве напрягало это очень сильно. Когда услышал, что в шарпе есть деструкторы - даже обрадовался, но когда узнал, что за деструкторы там есть...
2. В шаблонах в where нельзя использовать делегаты, хотя у меня в приложении нужен был именно делегат. Ни в МСДН, ни в какой книге не нашел объяснения, почему так было сделано. Нельзя и все.
3. Еще момент с шаблонами, щас уже деталей не помню, но что-то мне не понравилось с выводом аргументах в шаблонах и специализацией оных (или отсутствием чего-то в этой области). Хотя подобное в С++ было. Да и вообще, как я уже сказал, шаблоны из шарпа не сравнятся шаблонами из плюсов, хотя я думал, что учтут косяки и сделают лучший вариант. Скажем, where - очень хорошая штука, но пункт 2 портит впечатление.
3. Я не гуист, но когда пришлось написать гуевую софтину пришлось потрахаться: как-то не особо интуитивно понятная у гуя библиотека. Может, конечно я нихера не умею, но я попробовал написать небольшое гуевое приложение, которое на джаве (Свинг) (тоже нифига не умея работать с гуем) я наваял за пол дня. Здесь я потрахался подольше.
4. Убогая IDE. Для С++ к студии у меня никаких претензий нет. Это сложный язык, для которого сделать какой-нить рефакторинг и всякие полезные вещи. Но Шарп - простой язык в смысле парсинга и можно сделать хорошую среду для него, но ее нет. После IDEA (для java когда пишешь в студии, то кажется, что набираешь в блокноте.
5. Ожидания: все хвалят этот язык, типа круто, типа великий язык нового поколения, а остальное в утиль. А смотришь на него - недалеко они ушли от джавы. Здесь, правда замечу, что считать в Шарпе файл стало гораздо проще, чем в джаве :) с ее кучами вложенных ридеров

Helga87

2. В шаблонах в where нельзя использовать делегаты, хотя у меня в приложении нужен был именно делегат. Ни в МСДН, ни в какой книге не нашел объяснения, почему так было сделано. Нельзя и все.
у меня есть подозрение, что есть способ сделать то, что ты хотел, прямее. Покажи код, который ты хотел, чтобы он работал

nikita270601

1. Нет деструкторов. Есть жалкое подобие в виде using. Не нужно мне говорить, что в ссылочных языках это непонятно как сделать, т.к. непонятно, когда нужно вызывать деструктор. Его нет и все, а штука очень нужная. В джаве напрягало это очень сильно. Когда услышал, что в шарпе есть деструкторы - даже обрадовался, но когда узнал, что за деструкторы там есть...
using и try/finally очень хорошо заменяют деструкторы. Ты слишком сильно привык к C++, должно быть.

nikita270601

4. Убогая IDE. Для С++ к студии у меня никаких претензий нет. Это сложный язык, для которого сделать какой-нить рефакторинг и всякие полезные вещи. Но Шарп - простой язык в смысле парсинга и можно сделать хорошую среду для него, но ее нет. После IDEA (для java когда пишешь в студии, то кажется, что набираешь в блокноте.
Про Resharper, конечно, ты не слышал?

Helga87

4. Убогая IDE. Для С++ к студии у меня никаких претензий нет. Это сложный язык, для которого сделать какой-нить рефакторинг и всякие полезные вещи. Но Шарп - простой язык в смысле парсинга и можно сделать хорошую среду для него, но ее нет. После IDEA (для java когда пишешь в студии, то кажется, что набираешь в блокноте.
Есть плагин к студии под названием Resharper от той же фирмы, что делает IDEA

Helga87

3. Еще момент с шаблонами, щас уже деталей не помню, но что-то мне не понравилось с выводом аргументах в шаблонах и специализацией оных (или отсутствием чего-то в этой области). Хотя подобное в С++ было. Да и вообще, как я уже сказал, шаблоны из шарпа не сравнятся шаблонами из плюсов, хотя я думал, что учтут косяки и сделают лучший вариант. Скажем, where - очень хорошая штука, но пункт 2 портит впечатление.
"что-то не понравилось" очень вносят конкретику

nvm77rus

3. Я не гуист, но когда пришлось написать гуевую софтину пришлось потрахаться: как-то не особо интуитивно понятная у гуя библиотека. Может, конечно я нихера не умею, но я попробовал написать небольшое гуевое приложение, которое на джаве (Свинг) (тоже нифига не умея работать с гуем) я наваял за пол дня. Здесь я потрахался подольше.
а с чем примерно хоть трахался-то? что из себя представляло приложение?

tipnote

Я вообще-то ничего мелкомягкого в данном треде не обсирал. Это раз.
Два. Ты в двух постах вспоминал про управляемый си++ и вижуал бейсик. Нахрена?
Или ты вспомнил ВБ без дотнета вообще? Но уж managed C++ без дотнета вроде вообще не существует, нет?
Короче, ты какой-то непонятный, поздравляю :p Но все мои выводы о твоих заявлениях остаются в силе. У тебя элементарно нет ни опыта ни знаний, чтобы сравнивать приведенные мной языки.
-Ваш выпад, сударь!

nvm77rus

4. Убогая IDE. Для С++ к студии у меня никаких претензий нет. Это сложный язык, для которого сделать какой-нить рефакторинг и всякие полезные вещи. Но Шарп - простой язык в смысле парсинга и можно сделать хорошую среду для него, но ее нет. После IDEA (для java когда пишешь в студии, то кажется, что набираешь в блокноте.
опять мне почему-то кажется, что у тебя кривая/совсем старая версия студии...
все отлично там рефакторится и без всяких плагинов. на лету тоже много чего делает. и подсказки выдает, и комментарии твои во всплыающих подсказках отображает.
очень все удобно. какой фичи тебе не хватает? 99% что она в студии все таки есть. может ты умудрился каким-то образом отключить все ее полезные свойства?

nvm77rus

Я вообще-то ничего мелкомягкого в данном треде не обсирал. Это раз.
Два. Ты в двух постах вспоминал про управляемый си++ и вижуал бейсик. Нахрена?
Или ты вспомнил ВБ без дотнета вообще? Но уж managed C++ без дотнета вроде вообще не существует, нет?
Короче, ты какой-то непонятный, поздравляю Но все мои выводы о твоих заявлениях остаются в силе. У тебя элементарно нет ни опыта ни знаний, чтобы сравнивать приведенные мной языки.
-Ваш выпад, сударь!
вот смотри, после того, как мое заявление относительно крутости си шарпа не прошло без доказательства, я вроде как хочу выбрать побольше современных языков и их сравнить.
вот я и начал вспоминать эти языки. вспоминал-вспоминал. наконец вспомнил и эти языки - другие дотнет языки. и сражу же их отмел так,как си шарп их бесспорно делает (хоть с этим, я надеюсь, никто не будет спорить?) благодаря тому что я их сейчас вспомнил они уже "выбыли из борьбы". круг соперников сузился. всем стало проще выбирать

nvm77rus

а в целом моя логика о признании крутости си шарпа такая:
1. платформа дотнет это очень и очень удобно. стабильно и надежно.
2. когда выбираем из дотнет языков, ясное дело побеждает си шарп

nvm77rus

т.е. выходит сначала отметаем не дотнетовские языки, а потом кривые дотнетовские
хотя. если сравнить скажем джаву и кривой дотнетовкий с++, я скорее выберу джаву

nvm77rus

а в целом моя логика о признании крутости си шарпа такая:
1. платформа дотнет это очень и очень удобно. стабильно и надежно.
2. когда выбираем из дотнет языков, ясное дело побеждает си шарп
си шарп конечно не стал у меня лидером только изза того, что это самый удобный язык для дотнета. он к тому же еще не имеет явных недостатков. если бы они были, то никакой дотнет не скрасил бы горечь программирования

salora

цешарп vs иронпетон? для не гуя. не знаю как он присобачен к IronPython.

tipnote

Разве айронпитон дошел до продакшена?

nikita270601

он к тому же еще не имеет явных недостатков.
умиляет.
ты сейчас про какую версию C#? Например, C# 2.0 имеет явные недостатки по сравнению с C# 3.0. А C# 3.0, скорее всего, будет иметь явные недостатки с C# 4.0!

salora

хз, я про языки, а не про глючность

tipnote

Программист-романтик :D

nvm77rus

ты сейчас про какую версию C#? Например, C# 2.0 имеет явные недостатки по сравнению с C# 3.0. А C# 3.0, скорее всего, будет иметь явные недостатки с C# 4.0!
когда была только вторая версия, было очевидно, что третья на подходе. язык появился не так давно, еще не все что заложено и хотели реализовали. и направление развития видно.
если будешь смотреть на третьею, то уже врядли найдешь существенные недостатки (на которые нельзя закрыть глаза) без знакомства с четвертой

nvm77rus

давайте предлагайте все своих конкурентов. и мы уже полноценный холивар тут устроим, а то пока что как-то однобоко выходит.
вот джава звучала. еще претенденты? *не забываем про уже выбывшие из состязания языки

nikita270601

если будешь смотреть на третьею, то уже врядли найдешь существенные недостатки (на которые нельзя закрыть глаза) без знакомства с четвертой
К примеру, слабоватые генерики, о которых тут уже много сказано.
В качестве более удачного варианта можно рассмотреть любой динамически типизированный язык :). Из статически типизированных можно посмотреть на Scala.
Алгебраических типов и pattern matching из Nemerle время от времени не хватает.

Helga87

мне тут из зала подсказывают - Scala

Helga87

опять зал ответил раньше...

salora

У нас в конторе был семинар на тему: "почему нельзя использовать Scala". Думаю мероприятие было проведено не просто так.

Helga87

какие были аргументы?

nvm77rus

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

nikita270601

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

nikita270601

Нет языка, подходящего для всего сразу наилучшим образом.
Если этого не считать, то, конечно, лучший язык — Ruby. :D

salora

не знаю, не ходил :)

salora

Если этого не считать, то, конечно, лучший язык — Ruby. :D
+1

Helga87

+2

myrka68

-4

nvm77rus

Нет языка, подходящего для всего сразу наилучшим образом.
конечно. тут например вообще ни одного ФЯ не представлено.
цель холивара имхо выбрать такой язык, который наиболее сбалансирован, современен, удобен, был бы применим в подавляющем большинстве случаем и вообще, который можно советовать новичку не краснея :o , (см. название темы).
хотя топикстартеру лучше дейсвительно посоветовать не начинать осваивать программирование вообще - дороже выйдет.

nvm77rus

те кто голосовали за Ruby, сколько процентов своего кода вы пишите на нем сейчас? (сейчас- понятие относительное, поэтому пускай возьмем статистику за последний год).
если мало пишите, то почему?

nvm77rus

просто чтобы не получилось так, что откопается какой-нибудь чудо-язык. которые всех во всем рвет, но вот проблемка: нету нормальной среды разработки и не планируется. и вообще на его поддержку давно забили или его использование запрещено законодательством или еще какая-нибудь приблуда, сдерживающая кодеров.
вот для си шарпа я таких приблуд не вижу. то что очень много всякого кода написано на с/с++ - неважно. комбинируйте управляемый и не управляемый код и будем вам счастие (не полное конечно, но все ж таки)

salora

или его использование запрещено законодательством
ты матерно кодеришь штоле?

nvm77rus

ну это уже шутка была. но ведь может существовать реальные ограничивающие язык факторы, в добавок к тем что я привел, можно дописать глюки/тормознутость и другие недостатки компилятора

nikita270601

те кто голосовали за Ruby, сколько процентов своего кода вы пишите на нем сейчас? (сейчас- понятие относительное, поэтому пускай возьмем статистику за последний год).
если мало пишите, то почему?
Мало, потому что в том месте, где я работаю, используются другие языки программирования.
C# у нас используется ровно настолько же, насколько Ruby, или даже меньше. :)

lubanj

хорошо. а почему они не прогают на Раби, раз он так хорошь?

nikita270601

Правильно читается «руби».
Потому что вместо него (на тех задачах, для которых он бы идеально подходил) используется Python.

lubanj

а как велик весь процент задач, для которых по-твоему лучше всего подходит питон, относительно всей массы возникающих задач?

nikita270601

У меня на работе или вообще?
У нас решаются довольно специфические задачи всё же.

lubanj

вообще. холивары ведь идут о лучшем языке вообще, а не в узких областях

nikita270601

Не знаю, как оценить.

lubanj

ну тогда так попробуем:
можешь ли ты уверенно рекомендовать питон, как лучший язык для решения большинства прикладных задач?
или он все же хорош только в той узкой области, в которой сейчас ты его применяешь и в которой с трудом представляешь себе применение других языков

nikita270601

Я могу рекомендовать Python как лучший язык для решения большинства задач, которые я решал. Про большинство прикладных задач я ничего говорить не могу.

nikita270601

Точнее, Ruby, хотя можно и Python. :)

salora

Что понимается под прикладным программированием? Под какой осью?
Как легко ты в цешарпе можешь подхватить stdin, stdout, stderr для выполнения какой-то утилиты?

tipnote

И я могу питон так отрекомендовать :D А руби не могу - я же его не знаю, а только видел :p

nikita270601

Как легко ты в цешарпе можешь подхватить stdin, stdout, stderr для выполнения какой-то утилиты?
Это ты уже пошел в узкую область, а чувак рассуждает о высоких материях. Мне интересно, каким образом он придет к выводу, что C# — лучший язык для большинства прикладных задач.

salora

Обычно мне только это и нужно

tipnote

Решит все прикладные задачи на всех указанных языках и сделает подробный анализ!

lubanj

что ты имеешь ввиду под словом "подхватить"?
если просто вывести/считать, то имеется класс Console
нам доступны Console.In
Console.Out
Conslole.Error - все это - соотвествующие стандартные потоки

salora

Ну, пусть тебе нужно загнать в stdin какую-то последовательность, чтобы затем утилита подхватила её (как | в конвейере) из stdout, а потом получить вывод в stdout или/и stderr.

salora

Ну, мне не просто in-out нужны, а stdin, stdout, stderr именно от исполнения какой-то утилиты.

salora

Короче, в Python это выглядит примерно так:

...
import popen2

outstream, instream = popen2.popen2 ('мегаутилита ожидающая потока из stdin')
haha=['мега', 'поток']
instream.writelines (map (lambda x: x+'\n', haha
instream.close

megaout = outsream.readlines
# что-то делаем
...

lubanj

т.е. хочешь без шелла сделать конвейер?

salora

вроде того

Vladislav177Rus

System.Diagnostics.Process.StartInfo.RedirectStandardInput

Olenenok

Там на каждый чих по килобайту кода нужно хуярить?
ЗЫ 2: вот пример, когда цешарп неудобен.

Elina74


System.Diagnostics.Process.StartInfo.RedirectStandardInput

Там на каждый чих по килобайту кода нужно хуярить?
ЗЫ 2: вот пример, когда цешарп неудобен.


:lol:

nvm77rus

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

Olenenok

ага, а на темплейтах в цепепе можно написать любую программу ;)

tipnote

Про длинные имена - гон, имхо, полнейший.
Имена должны быть как можно понятнее, но не длинные. Пример:
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

nvm77rus

на си шарпе когда прогаешь, как ведь получается - главное найти нужный класс, дальше все очевидно совсем. за пять минут блуждания по подсказкам узнал много нового вообще о запуске процессов и параметрах, которые для этого можно (и нужно) передать.

tipnote

Удивительно! Где-то, наверное, по-другому!

timefim

Напишите кто нибудь наиболее значимые преимущества Ruby перед C#, для общего образования.

Helga87

он намного лаконичней

nvm77rus

Что понимается под прикладным программированием? Под какой осью?
Как легко ты в цешарпе можешь подхватить stdin, stdout, stderr для выполнения какой-то утилиты?
теперь моя очередь.
как легко ты можешь в питоне работать с веб-сервисами?
если совсемя тяжело (мало-ли, я питон только краем глаза видел то, на крайняк как просто http-запросики делать?

nvm77rus

блин. так не пойдет. дело перерастает похоже в сравнение стандартных библиотек и их удобства. это тоже конечно важно, но не решает.

nvm77rus

это все достоинства?

agent007new

Никаких исходников не осталось, поэтому я и писал, что "что-то" непонравилось, потому что сейчас уже не смогу вспомнить конкретно что

agent007new

using и try/finally очень хорошо заменяют деструкторы. Ты слишком сильно привык к C++, должно быть.

В свою очередь, могу сказать, что ты слишком мало использовал С++, что тебе эти конструкции ХОРОШО заменяют деструкторы. Да, ими можно заменить деструкторы, но это неудобно

agent007new

Про Resharper, конечно, ты не слышал?

Вот про это не слышал

agent007new

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

Я тоже считал, что студия - офигенная ИДЕ, пока не сел на джаву. Попробуй IDEA и посмотри, изменится ли твое отношение к студии. Или попробуй уже упоминавшийся Решарпер. Я его не видел, но раз его та же компания разрабатывает, думаю будет что-то похожее

Helga87

Никаких исходников не осталось, поэтому я и писал, что "что-то" непонравилось, потому что сейчас уже не смогу вспомнить конкретно что
Ненавидите кошек? Вы просто не умеете их готовить

agent007new

хотя. если сравнить скажем джаву и кривой дотнетовкий с++, я скорее выберу джаву
А если выбирать джаву и некривой недотнетовский С++ для негуевых приложений?

agent007new

Ненавидите кошек? Вы просто не умеете их готовить
А я там и не говорил, что я умею их готовить. Я так и сказал: как я не пытался, у меня не получилось. Из-за этого о кошках осталось плохое впечатление

agaaaa

Пока не люблю функциональные языки, но F# похоже так умеет.

nvm77rus

А если выбирать джаву и некривой недотнетовский С++ для негуевых приложений?
тут я тоже склоняюсь в сторону джавы. но опять же смотря какие приложения.если скажем это будут какие-нибудь численные методы или задачка по типу предлагающихся на acm-контестах, то с++
для всего остального будет джава

Olenenok

Пока не люблю функциональные языки, но F# похоже так умеет.
приведённый пример почти полностью императивный ;)

nikita270601

В свою очередь, могу сказать, что ты слишком мало использовал С++, что тебе эти конструкции ХОРОШО заменяют деструкторы. Да, ими можно заменить деструкторы, но это неудобно
Я много использовал C++ и использую сейчас. И на C# тоже писал немало.
Ты, очевидно, на C++ писал много, а на C# — мало, поэтому тебе и кажется, что деструкторы в C++ удобнее. У меня же мнение такое, что функционально using полностью заменяет деструкторы, а вот удобство зависит от ситуации. Бывает, что try/finally (using) существенно удобнее, чем деструктор, а бывает и наоборот.
Предлагаю эту часть спора прекратить, чтобы не устраивать членомерку.

myrka68

C# — лучший язык для большинства прикладных задач.
что такое "большинство прикладных задач"?
как это мерялось? =)
и что тут под "прикладными задачами" понимается?

nvm77rus

ну вроде как интуитивно-знакомое всем понятие. границы размыты конечно, но все же так более-менее.

Olenenok

ну вроде как интуитивно-знакомое всем понятие. границы размыты конечно, но все же так более-менее.
маладец

Olenenok

как легко ты можешь в питоне работать с веб-сервисами?
если совсемя тяжело (мало-ли, я питон только краем глаза видел то, на крайняк как просто http-запросики делать?
http://docs.python.org/lib/module-urllib2.html

nikita270601

что такое "большинство прикладных задач"?
как это мерялось? =)
и что тут под "прикладными задачами" понимается?
Не знаю, потому мне и интересно. :D

myrka68

как легко ты можешь в питоне работать с веб-сервисами?
для веб-сервисов (soap/wsdl) в питоне есть ZSI
но сама идея wsdl/soap настолько не эффективна, что работать с сервисами удовольствия мало

6yrop

2. В шаблонах в where нельзя использовать делегаты, хотя у меня в приложении нужен был именно делегат. Ни в МСДН, ни в какой книге не нашел объяснения, почему так было сделано. Нельзя и все.
у меня есть подозрение, что есть способ сделать то, что ты хотел, прямее. Покажи код, который ты хотел, чтобы он работал
+1
компилятор пишет вот такую ошибку
A type used as a constraint must be an interface, a non-sealed class or a type parameter.

а делегат это типа sealed класс, т.е. от делегата не относледуешься. Тогда зачем его в where указывать?

duke

Не бояться записи х=х+1 и понимать, что она означает
и после этого говорят, что гуманитарии много курят :confused:

geja_03

= в данном случае - оператор присвоения. Не обязательно баловаться травой, чтобы понимать различное значение символов в разных областях знаний.

FRider

и после этого говорят, что гуманитарии много курят :confused:

Это типичный пример того, как путают оператор равенства и оператор присваивания.
Запись абсолютна корректна

salora

и после этого говорят, что гуманитарии много курят :confused:
паскаль, только паскаль

agent007new

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

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

Helga87

if (typeof(T) == typeof(int

agent007new

Это было не все - просто случайно нажал запостить

Helga87

Тогда покажи, пожалуйста, весь код

agent007new

Это весь код - он нигде не вызывается еще, но уже отказывается компилироваться с такими симптомами.

kokoc88

if (typeof(T) == typeof(int
Не может получиться так, что при таком подходе чтение 1.000.000 интов из выборки будет занимать просто неприличное время?

agent007new

Не может получиться так, что при таком подходе чтение 1.000.000 интов из выборки будет занимать просто неприличное время?
Это ладно, у меня не сильно огромная база, мне лишь бы заработало

agent007new

Победил эту проблему, правда, как уже было сказано, это тормозно, что пипец:

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");
}
}

kokoc88

Победил эту проблему, правда, как уже было сказано, это тормозно, что пипец
В данном случае лучше делать привязку а-ля Hibernate/ADO - это будет работать лучше и быстрее. Можно даже самому написать атрибуты (аннотации в Java) для объектов, которые ты будешь вытаскивать из БД. Что-нибудь, привязывающее объекты и поля объектов к именам столбцов, возвращённых из запроса. Главное - не забывать кэшировать весь reflection.

Dasar


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-и.
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);
}

agent007new

надо четко понимать зачем ты используешь 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

agent007new

В общем, это уменьшение количества кода, который нужно написать, удаление дублирования кода

Dasar

во-первых, не понятно зачем ты вообще связался с 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;
}
где GetTable, это
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);
}
}

agent007new

во-первых, не понятно зачем ты вообще связался с reader-ами, а не с DataTable-ами
Потому что другого не знаю - что первое нашел, то и использую.
во-вторых, ты generic используешь именно для syntactic sugar
Может мы с тобой друг-друга не понимаем, но использую их я для другой цели
в-третьих, твоя задача решается через пару строк.
После того, как заработала моя мега шаблонная функция :) решение стало практически аналогичным. Проблема в том, что ДатаРидер нельзя сконвертить так просто, как ты указал в своем коде.

Dasar

> После того, как заработала моя мега шаблонная функция решение стало практически аналогичным. Проблема в том, что ДатаРидер нельзя сконвертить так просто, как ты указал в своем коде
что нельзя сконвертить?

serega1604

ты писал чо нибудь кроме как под дот нет?

agent007new

Ты привел следующий пример, как это можно сделать:
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 и пытаться его сконвертить в нужный тип. В таком случае решение получается аналогичным твоему.

agent007new

В общем, это одноразовая утилита и мне не нужно ее сделать ни быстро, ни красиво - просто нужно, чтобы она заработала. Поэтому вопрос закрыт - я добился того, чего я хотел
Оставить комментарий
Имя или ник:
Комментарий: