В 2015 было три вакансии в моём городе, сейчас - четыре! Сфера растёт!
А если серьезно, то сейчас большинство айти студентов пишут на Делфи и на Паскале, потому что язык до сих пор самый заебок для обучения. В реальных процессах это только суровый Легаси
Да херня он для обучения. Знал бы ты как у меня пригорает от аргумента "Паскаль хорош для обучения". В контексте базовых вещей в виде условий, циклов, функций, переменных, разницы между С и Паскалем никакой. От слова совсем.
Вот только если ты обучил человека основам алгоритмизации на С, то ты сразу можешь переходить на более высокие уровни. Многие языки имеют С подобный синтаксис. Например если я тебе покажу кусок кода:
for (i = 0; i < 4; i++) { doSomething(); }
То ты не сможешь сказать на каком это языке. C, C++, C#, Java, или ещё какаой то язык.
Если же ты изучаешь Паскаль, а потом хочешь применить свои знания в чём то более актуальном, то хер тебе в рыло, сраный урод, изучай всё с нуля. Да различия в базовом синтаксисе небольшая проблема для опытных программистов. Но когда ты только-только изучаешь программирование, то когда ты в новом языке видишь знакомые конструкции, это помогает и наоборот когда новый язык отличается буквально всем, в том числе и базовым синтаксисом. То это сбивает с толку.
Проблема не выдумана. Я просто сталкивался со студентами, которых сначала учили основам алгоритмизации на Паскале, а потом бросили в ООП на Java. Они уже ходят в ахуе от объектов, интерфейсов, наследования, инкапсаляции и прочих высокоуровневых штук, а их ещё добивает другой ситаксис.
Ну, тут либо студенты деревянные, либо преподаватели. Третьего не дано. В жизни, студенты, не работавшие с реальными проектами, не понимаю от слова совсем, зачем нужен этот ООП. Хотя трюки могут знать, не понимая зачем и почему.
К вопросу о реальных проектах. Где, помимо лаб, студет может применить полученные на занятиях навыки? Если он изучает С, то можно ему ардуину подсунуть. Поморгать светодиодом не бог весть какая задачка, но ощущение того, что знания можно уже где то поименить, очень важно.
Зачем изучать язык, который нахуй никому не нужен, только чтобы потом через семестр его забыть как страшный сон.
Сейчас вспомнилось, видел я одного преподавателя, который решил для облегчения жизни студентов придумать свой язык. Не помню уже чем ему не понравился существующий язык, но он решил сделать свой, более простой для обучения. Единственный в мире интерпретатор с этого языка был написан им же. Причём для запуска этого интерпретатора требовался компьютер с чистым DOS и AGP видеокартой (он что то там нахуевертил с прямым доступом к видеопамяти и на современных компах это говно не запускалось). Знал бы ты с каким энтузиазмом студенты изучали язык. Просто не описать словами. Я понимаю, этот пример это конечно клиника, Паскаль чуть более полезный чем этот выдуманный язык, но принципиально это ситуации не меняет. Поэтому когда мне говорят про "Надо на Паскале изучать основы, а потом переучиваться на что то реально используемое" то я вспоминаю этого преподавателя.
Толковые студенты уже со второго-третьего курса подрабатывают программистами. А те, кто забывают основы программирования как страшный сон - им нечего делать в IT. Поймите - неважно какой синтаксис у языка. Важно что на нем можно делать. Паскаль создавался именно для обучения - отсюда строгий контроль типов данных, абстрагированность от операционной системы и.т.д. С как язык полувысокого уровня для системного программирования, т.к. современные операционные системы писать на ассемблере - слишком трудозатратно.
Если студентов начинать обучать на С, то, по хорошему, это нужно делать только после того, как им дадут основы работы операционной системы, поскольку для написания нормальной программы на С нужно уметь контролировать память, понимать чем ссылка на переменную отличается от переменной, понимать зачем нужно строго контролировать типы данных и.т.д. От этого у них сразу голова кругом пойдет, и будет не до основ написания кода. А если учесть что современные информационные системы работают с базами данных, у которых свои языки помимо SQL, и грамотный спец часть функционала переносит на функции и исполняемые процедуры, где нужны все те же основы программирования, либо код формирует запрос к базе SQL, а потом разбирает результат, то как быть со знанием SQL? А если работать с NoSQL базами?
А в реальности выпускники имеют очень слабое представление как работает операционная система, равно как и как функционирует сеть. Поэтому приходится их этому обучать. Джун отличается от синьора не тем, что сеньор знает все тонкости языка и кучу дополнительных пакетов, а тем, что он знает как решать проблему и где быстро получить недостающую информацию.
Мне, лично, давно по херу на чем писать. Пишу на том, что для данной задачи больше всего подходит. Обычно это Basic или Java, на С уже лет тридцать ничего не писал, как и на Pascal. Прошлым летом за пару недель освоил питона. Ничего особенного, но прикольно. А вот для быстрой аналитики ничего лучше экселя с его VB я так и не нашел.
И в заключение - на ардуине можно поморгать лампочкой, а можно сдеать нормальную систему контроля отопления на даче, чтобы в отсутствие хозяев, помещение подогревалось по ночному тарифу, а перед приездом, по команде со смартфона, догонялось до нормальной температуры. Естественно, в зависимости от температуры снаружи. Я такую студенческую поделку видел.
Когда я имел дело со студентами, они даже не всегда имели дома компьютер, поэтому их учили программированию буквально с самых основ и ни о какой работе программистом с первого курса речи не шло.
И уже тогда у меня подгорало от учителей старой школы которые как мантру твердили "изучение нужно начинать с паскаля, он был придуман для этого". На уровне основ алгоритмизации разницы между Паскалем и С никакой. Что собственно потом было успешно доказано, когда студентов перевели с паскаля на С. Но при этом в случае с С он могут применить полученные знания где то помимо уроков, а Паскаль воспринимается именно как язык который нужет только на лабах.
Ну, как Вам сказать... Я и сам был студентом, и уже с начала с трерьего курса на соседней кафедре работал над проектом записи показаний с двухканального осциллографа на ДВК-2М. Потом еще на полставки устроился оператором СМ-1420 в одно НИИ. На кафедре писал на макроассемблере, в НИИ использовали и паскаль и С, поскольку там еще и роботроны были. На 1420 я писал небольшие программки на С, а вот диплом писал уже на Паскале, дома на ДВК-2М притащенной из НИИ. И было это в середине 80-х. Потом, выйдя на работу приходилось работать только с базами данных, и языки были соответствующие. Сейчас что-то кодирую очень редко.
Сейчас на смену паскалю пришел пайтон, а с просто развивается. И каждый их них закрывает свой круг задач.
Если ты её понимаешь, то ничего не стоит перейти на другой язык. Небольшие усилия.
У меня переход с дельфы на шарп до уровня трудоустройства джуном занял полгода, когда я не работал и жил на накопления. Так что изучать паскаль и дельфу только чтобы "понять алгоритм", и чтобы потом было нужно переходить на нормальный язык, это бред, проще сразу изучать нормальный язык, с которым тебя после ВУЗа возьмут джуном.
Но есть другая проблема: выбор "нормального языка".
Сейчас пайтон больше куда для обучения пойдет.
Для обучения не пойдет, потому что это управляемый интепретируемый язык с динамической типизацией.
Подошел бы например C++, но у него другая проблема: совершенно зубодробительная сложность, и джун на плюсах тоже хрен найдет работу.
Как эту проблему решить - хрен ее знает. Какие еще есть языки, где есть все что есть в дельфе, есть еще и веб, и которые востребованы на рынке?
проще сразу изучать нормальный язык, с которым тебя после ВУЗа возьмут джуном.
Не проще. Джуны никому не нужны, проще как раз качаться до миддла и искать работу сразу там
Джун который имеет знания но не имеет опыта нужен чтобы вырастить из него мидла потому что мидлов на рынке крайне мало. Почему я такие простые вещи вообще должен объяснять
Если же джун ничего не знает от это не джун, а стажер (trainee) или вообще залетный чел
нужен чтобы вырастить из него мидла
Который уйдёт как только ему покажется, что ему мало платят. И по итогу у тебя и сеньоры были обучением заняты, и джун так в проект и не вошел.
Поэтому все конторы ищут только миддлов.Почему я такие простые вещи вообще должен объяснять
Не знаю, я вообще в курсе, как процесс проходит, и не раз сопровождал молодых до первой работы. И искал на своей работе людей в команду.
И мне очевидно, джуны никому не нужны. Выучить быстренько язык и пойти работать уже не выйдет.
А алгоритмам не нужна типизация.Нужна. Человек должен понимать как данные хранятся в компьютере и какие ограничения разные форматы хранения данных накладывают. Да я понимаю, что в некотрых областях динамическая типизация это удобно. Однако одно дело говорить "это удобно когда компилатятор/интерпретатор делает это за меня" и несколько другое когда человек в принципе не понимает что такое разные типы данных и чем они отличаются. Не думать о типах даных - прямой путь в проститутки.
И то, что при обучении такому языку, будут опущены концепции типов, управления памятью, компиляции.
У меня стажер полез в SQL и нашел такой код:
CASE foo WHEN bar THEN foobar END
И спрашивает, "А чё это за херня такая, END?"
И вот как ему объяснить? Я-то прекрасно всё странслировал, а вот он, обученный на си-подобном синтаксисе столкнулся с этим впервые.
И так происходит во многих местах. Си-синтаксис не царь и властитель, когда-нибудь тебе так или иначе придётся столкнуться с чем-то иным. И плохим будет подход отрицать всё, что отличается от твоего базового языка.
Знал бы ты как у меня пригорает от аргумента
Я абсолютно согласен с тем, что Си на семь голов превосходит Паскаль в плане интегрирования в программирование, более того, у него теперь есть конкурент в виде Питона, который тебе сразу профессию даёт, в отличии от Си, на который непросто устроится начинающему.
Но. Я считаю, что программист обязательно должен пройти этап изучения синтаксиса другого языка. Да, это сложно, больно и в моменте непонятно зачем, зато на следующих этапах выбор языка будет определяться не "этот я знаю, на нём и пишу", а "этот подходит больше, значит надо выбрать его".
А эта гибкость критически важна для программиста, и самый простой способ (но не единственный) её приобрести - начать с изучения мёртвого языка.
Я понимаю, язык нечасто приходится менять, но эта же гибкость уже вынуждает тебя изучать новые фреймворки, шаблоны проектирования, подходы, решения проблем и так далее.
Ты вместо того чтобы свести всё к одному известному решению, пытаешься отыскать все варианты и выбрать лучший.
И всё это, на мой взгляд, зарождается тогда, при изучении нахрен никому не нужного Паскаля. Понимаю, звучит безумно, но многократно проверено на десятках знакомых программистов.
А в чем проблема? Я с нуля разобрался с питоном и сделал программку, которая из MQTT данные льет по таблицам SQL примерно за пару недель. Язык сам по себе очень простой, как паскаль или бейсик, но с кучей возможностей.
Дык, я с этим и не спорю. Просто есть плотницкий топор и есть стамеска. каждый инструмент хорош для своей цели.
Я про то, что обучать программированию с нуля на С это довольно жестко.
А вот теперь подумайте, стали бы вы изучать программирование, если бы Вам давали бы его сразу на С, да еще и по взрослому?
Процесс нормального обучения должен строиться из этапов. На каждый следующий этап ты переходишь взяв с собой какой то багаж знаний с предыдущего. И чем больше знаний из предыдущего этапа ты можешь использовать тем быстрее идёт освоение.
Когда ты знаешь уже много всего то изучть язык с другим синтаксисом не сложно. Подумаешь синтаксис другой, но вокруг куча других знакомых вещей.
Когда ты только только изучаешь программирование, и весь твой багаж знаний это знание синтаксиса и примитивных конструкций и тебе говорят "всё хуйня давай заново" то это больно.
И ничего, особой боли я как-то не испытал.
Там по сути-то разницы в begin-end и {}, процедур нет и другой синтаксис цикла for, всё остальное такое же, невелика сложность даже для студента.
С учетом написания двух курсачей, в Паскале на момент окончания первого года я уже шарил хорошо
Ключевой момент в том, что ты начал изучение ООП на примере делфи. А я сталкивался с ситуацией когда студентов учили основам алгоритмизации на паскале (потому, что старый и уважаемый проффесор заявил, что паскаль это идеальный язык для обучения алгоритмам и ни кто с ним не спорил). А потом этих студентов бросили в изучение ООП на Java. Люди в целом в ахуе от ООП, а тут их ещё добивает то, что они базового синтаксиса не знают.
Я понимаю, что для людей которые уже хорошо знакомы и с ООП и с алгоритмизацией перейти на язык с другим синтаксисом не сложно. Просто потому, что они уже уструкруту программы понимают и нужно только подсмотреть в справочнике как уже знакомые им вещи пишутся на другом языке. Но когда тебе нужно одновременно изучать и новые концепкции и новый синтаксис, то это больно.
Я уже лет 15 программирую, и еще не было такого момента, в котором я бы расслабился и работал бы без параллельного изучения чего-либо.
Если не делать себе больно новыми знаниями очень быстро станешь неконкурентноспособен.
Если не выдержал такого во время обучения, когда тебе все знания разжевывают и контроллируют каждый твой шаг, то вряд ли у тебя получится не выгореть на работе в первый же год.
Вопрос не в том, что изучать новое, вопрос в том, что новое должно базироваться на старом. Например ПДД на мотоцикле и на автомобиле вообщем то одинаковые. Однако представь себе если ты учился базовым навыкам вождения на автомобиле, как тронуться с места, как переключать передачи, где газ, где тормоз, а при первом выезде в город тебе инструктор выкатывает мотоцикл со словами "надевай шлем и поехали".
Но когда тебе нужно одновременно изучать и новые концепкции и новый синтаксис, то это больно.
Ну хорошо, не хотите одновременно изучать и то и другое, не изучайте.
Изучайте по очереди, в чём проблема-то?
Вопрос не в том, что изучать новое, вопрос в том, что новое должно базироваться на старом.
Ну вот я выучил синтаксис Паскаля, потом перешел и выучил синтаксис Си, и ООП на Делфи.
Пока я учил синтаксис Си, у меня была база в виде синтаксиса Паскаля.
Пока я учил ООП, мне не приходилось учить язык.
Где тут боль?
Да херня он для обучения. Знал бы ты как у меня пригорает от аргумента "Паскаль хорош для обучения". В контексте базовых вещей в виде условий, циклов, функций, переменных, разницы между С и Паскалем никакой. От слова совсем.
С одной стороны он херня еще и потому что он никому уже не нужен, это бесполезный язык для трудоустройства, по сути. Но касательно обучения - он лучше управляемых языков тем, что он позволяет изучить ручное управление памятью. И в этом плане он не такой зубодробительный как плюсы. Дельфа тем и хороша что позволяет изучить все сразу - императивный язык, не взрывающий мозг, строгая типизация, управление памятью, ООП, работа с сетью и т.д. Правда сейчас добавился еще и веб, но мне не вспоминается что-то язык, все все это есть сразу.
Мне самому пришлось обратиться к дельфе пару лет назад, когда надо было для проекта C# накидать неуправляемую библиотеку для инжекта в другие процессы для отлова низкоуровневых событий скролла мышкой. Но это единственный случай за 15 лет. Я думаю, сейчас нет никакого смысла выбирать дельфу для нового проекта, и на ней пишут только из-за легаси.
IT-юмор
6.9K поста53.2K подписчиков
Правила сообщества
Не публикуем посты:
1) с большим количеством мата
2) с просьбами о помощи
3) не относящиеся к IT-юмору