тут нет юмора. Люди что-то где-то слышали о языках программирования. Асм - скорее просто нож. С помощью него можно сделать все, но медленно. С - это скорее пушка. Мощно, но не совершенно и может взорваться. С++ - это ядерная ракета. Может поражать любые цели, с любым зарядом. Но и по себе можно нехило съездить. С# - это тоже ракета, но она летает только в определенные страны. И только по соглашению
Хм.... Либо я не знаю языков программирования, либо вы не правы. Например если с++ это ядерная ракета, то нужно было уточнить, что собирать эту ракету придется по молекулам.
это в школе так. Нормальные люди давно пользуются кучей библиотек.
13
DELETED
Ещё надо учесть, что с++ - это ядерная ракета, сделанная напильником из парового двигателя, в следствии чего многие современные технологии поддерживаются очень странно и неэффективно.
Посмотри на D и увидишь, как должен выглядеть и работать c++. Когда при проектировании языка закладываются современные концепции программирования, естественно, что язык работает гораздо быстрее, чем чем допиленный до современных стандартов язык 70-х годов.
Где-то один чел писал, что по его мнению является нормальным свойством. Из его рассказа сделал вывод, что в современных яп это не всегда просто синтаксический сахар. Подробностей не знаю, я в такие анналы ООП ещё не углублялся.
Да, оно. Там в комментариях чел горку требований к свойствам предъявил. Столь углубленно я пока C++, да и вообще ООП не знаю, поэтому толком ничего не понял, но ему похоже это бывает необходимо. Стоит отметить, в чистом ООП вроде вообще ни свойств, ни методов нет.
Методы - неотъемлемая часть ООП. Грубо говоря, в ООП всё делится на объекты, которые совершают какие-то действия, для которых и нужны методы. Свойства действительно не описаны, но они и являются коллекцией методов и переменных. Всё, что можно написать в свойствах, можно написать и без них. Просто вместо a.x=3 будет a.setX(3) например.
Это в нынешних реализациях. В начальной версии ООП (как оно появилось) не было ни методов, ни свойств. Были сообщения, которыми объекты и обменивались. Стоит отметить, сообщения сами по себе были объектами. Вроде не напутал. В общем, за подробностями к языку smalltalk.
Метапрограммирование - это больше касается работы компилятора, то есть большая часть кода пишется не программистом, а компилятором. Ну и самомодифицирующийся код не стоит вычеркивать.
Это где он быстрее работает? D в некоторых случаях сравним по скорости с С и С++. В частности, когда нет широкого использования сборщика мусора. Если же сборка мусора присутствует, то С++ работает значительно быстрее.
Вы выпали из жизни на последние года два точно - сейчас часто всплывают статьи, в которых анализируется один и тот же код на D и C++ - обычно D дает ускорение около 50%.
Но даже D - это уже устаревший язык. Нынче Rust в большом почете.
Rust до "золотистой корочки" ещё не дошёл, так что его стоит использовать осторожно.
Порылся, не смог найти ни одной такой статьи. Видел только отзывы о том, что, как я уже писал, он может давать сравнимое преимущество без GC и работает значительно медленнее с ним.
На моей памяти, большинство тестов, где сравнивали какой-то язык программирования с С++, использовались программы, которые выгодно использовали средства того языка, а потом с минимальными изменениями копировались в С++, при этом фичи самих плюсов использовать, естественно, забывали.
Ок. Мужик на форуме DLanguage пишет, что он закоммитил 5к строк кода, он заработал быстрее. Все радуются:
>It's the first battle signaling the end of Middle Earth, and the rise of the Age of D.
Это секта какая-то чтоли?
Я просто ожидал чего-то вроде небольшой статьи, где приведен код на D и код на C++, который можно запустить на своей машине и сравнить. Код, который бы демонстрировал какое-то фундаментальное отличие D от C++.
Нет, Вы не подумайте, что я не верю Andrei Alexandrescu. Возможно всё. Это просто может быть следствием кривости исходной С++-реализации и прямости реализации на D, а не наличия каких-то особых фич.
ну понятно. а к чему эти градации если у каждого из этих языков общие 2 вещи: "можно сделать круто, но можно убить себя" Даже в комметах ВСЕ постят на ВСЕ языки программирования какие то реверсивные орудия убийств.
В Haskell'е убить себя будет довольно сложно. Но и написать программу на нем на порядок сложнее чем на этих языках. Порог вхождения у него гораздо выше.
Хаскель требует большого объема матчасти, чтобы вообще начать на нем писать и работы на высоком уровне абстракции. Но когда ты это осилил то писать на нем одно удовольствие и твоя продуктивность будет в разы выше, чем на более традиционных языках. Асм же наоборот прост и понятен как 5 копеек. Но писать на нем долго и неэффективно. Придется много дебажить и отлавливать ошибки, которые в других языках не могут возникнуть по определению.
Сложность освоения против сложности использования. Сложность самой задачи против сложности ее реализации. Хаскель помогает решить задачу, а ассемблер усложняет ее решение.
На любом языке можно написать кашу которую никто не разберет. Если писать в нормальном стиле он очень хорошо читается (если ты знаком с синтаксисом). Плюс тебе не нужно лезть внутрь каждой функции, чтобы понять как работает программа на Хаскелле, потому что функции чистые и тебя должны волновать только входные и выходные параметры. Сами функции гораздо короче нет портянок кода по нескольку страниц, никакого утекания абстракций и неконтролируемых сайд-эффектов не происходит. Никакой другой язык подобных гарантий дать не может. Плюс надо научится использовать систему типов и это повышает читабельность в разы. Не надо судить о языке по однострочникам, которые выкладывают чтобы показать мощь синтаксиса. Нормальные программы так не пишут.
Нормальный программист на любом структурном языке программирования, включая тот же С не допускает разрастания процедур или функций более, чем на одну страницу. В отношении разных эрлангов или хаскелл все то же самое совершенно спокойно пишется на С. с оговоркой - прицел под конкретную платформу. Работать будет в разы быстрее. Нормальной кроссплатформенной совместимости на уровне исходного кода скорее всего не будет.
Ну я работал в крупных С проектах которые писались много лет, с участием сотен программистов и миллионами строчек кода. И функции по много страниц были повсеместно. На живых примерах я специально измерял с коллегами и эквивалентная по функционалу программа на С имеет примерно в 10 раз больший объем и ее написание и дебаг занимает примерно в 10 раз больше времени. При этом там гораздо больше багов остается. И по скорости если специально не оптимизировать, то Хаскель медленнее на 30% примерно, и большая часть этой разницы приходится на GC. Если дать ему больше памяти, то GC будет запускаться реже и разница будет меньше. Никаких фундаментальных причин, чтобы Хаскель был медленнее С нет, это такой же компилируемый язык, которые компилируется в бинарник. При этом компилятор там очень мощный и делает очень крутые оптимизации. Если написать там код в стиле С с ручным управлением памятью и без контроля выхода за пределы массива он будет такой же быстрый (только при старте ему будет нужно немного времени, чтобы инициализировать рантайм). И нужно учесть, что в наше время машинное время дешевое, а время программиста дорогое. Людям проще докупить более мощное железо, чем оптимизировать.
Возможно для определенных ситуаций Вы и правы. Собственно Вы скорее всего правы. Знаете, почему я так легко сдаюсь ? Я не могу продолжать с Вами дискуссию по простой причине: я эмбеддщик-кристальщик. В Вашу область я порой заглядываю, чтобы написать андроид приложение. И эта, обычно несложная задача меня выводит из нормального состояния на недели. я не пишу на java достаточно, чтобы банальная, но нетиповая операция не заставила меня лезть в гугл. Это унизительно. Пока я использую банальный процедурный язык - для меня все двери открыты. Я там Бог. А если мне не нравится тайминг процедуры я смотрю в lst и если нужно переписываю фрагмент нахрен на asm. И да, тогда я вываливаюсь за пределы страницы на процедуру. Но я точно знаю, что делает каждая строка моей программы. Я точно знаю в лицо каждый байт. Мне это нужно. Мы просто разные.
Да наверно не стоит превращать пикабу в хабр или LOR :) Наша область это был тоже embedded, только это были прошивки для телефонов (обычных, не смартфонов), там ресурсов побольше :) Кстати одна из прог которую я написал на Хаскелле была прога для управления хардварным JTAG дебаггером :)
У любого яп есть специализация (правда есть те, кто не хочет это понимать). Я сомневаюсь, что на хаскеле вы будете "штурмовать" систему и память, при этом также сомневаюсь, что на асме будете решать лютые матанистые задачи.
я только в IDE пишу код, изредка обычным блокнотом пользуюсь. Не знал
DELETED
Хочу начать изучать программирование,мне посоветовали сразу начать с Java,т.к. именно с Java могут взять на работу в этой сфере и т.д. и т.п. Это правда или нет ? )
Всегда забавляли такие вопросы.Хочешь программировать или работать за большие бабки?Если первое,то и сам найдешь ответы на вопросы, этих вопросов тонны, на лоре, хабре, ответов тоже тонны.Когда я начинал интересоваться, я почему-то нашел всё сам, а тогда это было ощутимо трудней, вэб 2.0 ещё даже не начался тогда.А если второе,можешь даже и не начинать.Что вообще за глупость,что программирование это легко и для всех?Было бы это так, за это бы не платили.Хелловорд то осилит каждый, если не совсем клиника, а работать профессионально программистом - это не как в фильме, полчаса по клаве побарабанил, и оп! - пара тысяч долларов на счет упала.Нет такого.А работа - тебе сказали, что с java-ой ты легко найдешь работу.Ну-ну, давай.Придешь ты на собеседование в фирму ... и?Ты прочитал вот эту книжку?Ну молодец, а к нам тут второкурсник обучающийся на айтишной специальности приходил.Мы его возьмем.И так будет в почти любой толковой фирме, куда могут взять джуна и где есть возможность его учить.Фриланс?Без опыта и отзывов - ты никому не нужен.Толковые заказы разбирают влёт.А то что не разбирают, с этим лучше не связываться.Работа то есть, и работников действительно не так много.Только не так много ПРОФФЕСИОНАЛОВ.Их не хватает..Разных умников, прочитавших полторы книжки, и мнящих свою зарплату от 80к - хоть жопой жуй.Если такие производят хотя бы говнокод, это уже хорошо,значит можно и нормального вырастить прогера, но как правило, вообще ничерта не делают, даже погуглить впадлу.Их берешь в надежде на хотя бы стремлениее развиваться, а фиг там.
Гора текста, но давно накипело.Постоянно вижу на профильных форумах аккаунты новичков, с вопросами такого типа.Как правило, больше месяца они не выдерживают и бросают это дело.Доходит, что бабло не начинает сыпатся с потолка, как только открываешь IDE.1 из ~50 остается и втягивается.Не больше. Буду рад если окажусь не прав в отношении тебя.
Если ты вообще в программировании новичок - не надейся в ближайшее время на заработок вообще. Если хочешь быстро на чём-нибудь заработать, лучше поискать другой источник денег. Как и любая профессия, программирование - это стиль жизни. А быдлокодеров и так хватает. Если всё же решил программировать, юзай гугл. Я считаю, сложно по советовать какую-либо книгу, здесь нужно самому полистать и посмотреть какая будет наиболее понятна. В книгах будут примеры. Обязательно их писать вручную, без всяких ctrl+c, ctrl+v (быстрее команды запомнишь). Запускай примеры в режиме отладки (F7 или F8 обычно) - так точно будешь понимать, как выполняется программа. Если осознаёшь, что понял материал, пиши отсибятину, модернизируй и изменяй примеры из книги, реализовывай их по-другому. Импровизируй в общем. Нормальное программирование - это не шаблонность, это импровизация. Делай свои проекты. Если не знаешь, что написать, пиши то, что уже написано. Блокнот, рисовашку, заставку. Да что угодно, главное писать и писать много. Если не знаешь, как что-то реализовать, попробуй "познать себя": подумай, как бы эту задачу выполнил бы ты сам (мне на ранних этапах это очень сильно помогало). Не ограничивай свои знания одной лишь книгой. Читай другие книги, листай форумы. Касательно форумов: это клад знаний. Книга - это опыт одного человека форум - опыт тысяч. Если что-то совсем не знаешь или не знаешь, как найти (бывают случаи, когда не знаешь, как задать поисковый запрос), опят же - форумы. Не пиши куда попало и на какие попало форумы. Есть форумы профессионалов, а есть форумы новичков. На форумах люди любят деятельных людей: покажи, что ты заинтересован в знаниях, а не в решении. Если возможно, расскажи, что сделал и что не получилось. Например, вопрос вроде: "Не могу написать то-то, покажите как" не удачный. Гораздо лучше: "делал то-то, не вышло. В чём ошибся". И не лениться читать то, куда посылают. Допустим, прочитал - не понял. Проанализируй, что именно не понятно, и уточни данные моменты. Где-то как-то так.
По книжкам?Алгоритмы, Кормен, например.Программа по математике трёх курсов технического универа.Это база.Но все равно, сколько бы не знал и умел, постоянно будут нужны будут новые знания,база даст понимание, в каком направлении копать. По java понятия не имею.Я специализируюсь на микроконтроллерах, тут С и асм.Искренне надеюсь на rust, но они еще даже доки не причесали до конца.
Скажем так, программист - это не универсальная специальность. Каждый язык программирования создавался для каких-то своих задач. Возможно стоит начать как раз с задач. Но есть и такие, кто идут в программирование чтобы заработать и на этом основании выбирают язык программирования. Здесь стоит смотреть на рынок. Кстати, рынок как раз "советует" учить java или C#.