#dev-general
1 messages ยท Page 124 of 1
I must learn if it I enter uni
if they both are compiled to machine codeWait what?
no
C is compiled to machine code
not the others
Speed depends on context
java bytecode is AOT compiled
If you have written the program well then C would def be faster but since most don't always use the most efficient way in a lot of cases Java/Kotlin do reach close due to internal optimizations.
JIT*

No its compiled to JVM bytecode and interpreted by JVM
it's not translated?
If Java was compiled to machine code it wouldnt run on diff environments
Thats the point of jvm
no no
i mean
it gets compiled to bytecode
but I thought the JRE translates that to machine code
during runtime yes
yes
then ye prob
Used to be comparitively faster and still is for small programs, but when you are writing something considerably large the JVM optimizations usually pay off and they come off close. I doubt everyone who uses C would take care to optimize every part as much in all cases.
Yeah that's a good point
C is still fast, but jvm languages are close enough
What in the ... xD
link xd
Extra credit course, youll probably have to buy the course lol
this....uh....
Not free if you want it all, but the audit bit looks good enough
Theres 26 hours of video/work
Looks pretty good
@errant geyser link?
oh
morning all
anyone got any idea how to fix a mess like this: https://bin.bardy.me/Hwiqnh34.pl ?
Add comments
First time instagram actually "recommended" wise things
It's not allman though
hence the tick
Aj, stfu
kk
Ummmm
The title is "consistent indentations"
But both of the examples are consistent
lol...
you get what I mean...
Not very wise after all
nah
Shut up 4head
Anyone used kotlin for js
cant stand js
so might as well atleast try it with kotlin
adding kotlin-js seems to destroy everything else
BS
๐
Apparently it will always be under trial
Lmao yeah
hm?
Well that's not gonna work
Yeah not at all
You would have to use a multi platform project structure
the gradle project wizard would set that all up for you
course it would
It shouldn't even be that hard
Those brackets 
that space between the if and ( tho
It has to be there.
this is better -> if(word == Word.FUN){
Fuck no
Hello
Hello
who tf type if()??
Weirdo boi Aj
@prisma wave what does your function body parsing look like?
No
I dont think I know how to ask this question
here
When I go to parse a function, I first go through the functions defined params, and add commands for creating and assigning them
Do you have something like this?
Similar
fix your highlighting kthx
Bit of a mess, but https://www.github.com/SoftwarePantheon/Frigga/tree/master/src%2Fmain%2Fkotlin%2Fme%2Fbristermitten%2Ffrigga%2Ftransform%2FFunctionTransformer.kt
I just keep each parameter as name - type until runtime
Then at runtime I just push and pull to Scope.parameters
When are they pulled from the stack?
Also this it.typeSpec().type().toType()
a MESS
But I completely understand and forgive you
thank you
they're pulled in CommandCall
Each Param is stored as a Command and just gets evaluated and pulled
val theseParams
val thoseParams
:/
ourParams and theirParams
What file is that even in?
WHICH BTW
Hard to fucking find
Ah yes
This is why I name files with multiple classes differently
what do kotlin extensions compile to?
Tools > Kotlin > Show Kotlin Bytecode > Decompile
oh yeah
right
huh
so just a static method and then it has the thing as a param
fancy
yes but annoying you seems like a better use of my time
Not necessarily a static method mind you
What implies I'm annoyed...
But a receiver function
wth is that
whats a receiver function tho lol, that looks like a normal static method to me
What is that theme
In this case it's the opposite of an extension function
Imagine a Java util class
It takes a parameter instead of being an extension function
Kotlin bytecode is kidna hot
Decompiled kotlin*
I have mastered kotlin.
๐ ๐
Why are people like this ugh
Well done
1 liner galore
Leaving 1 star reviews cause they can't pick up their phone and use the picture translation tool that Google Translate has
sx gonna yell at u frcsty
Oh damn he's done it all
Klyser, link and we'll all report the nonce
Now onto thingy numero 2
although, pls no 1 linerinos
Warps plugin with Player Wrapper class (might want to use delegation)
yes i believe so
as its fake a review
altho, idk if spigot actually do anything about them kek
They do if it's reported enough
Should I report the account iself?
Oh shit we can't actually report comments
if they have many fake reviews then ye
feels bad
feelsbad
link
nwm I need something more advanced
Plenty of good stuff on mine ๐
soz
๐ญ
BM :c
mutableMapOf()
or mapOf
That's like private final new Map<String, Location>() warps
bear in mind that in kotlin Map isn't mutable
Same with all collection types
My brain
how come frostys already doing more advanced shit than me and he just started an hour ago ๐ญ
i started a month ago
๐ญ
bc he knows Java I guess
not fair
you can pretty much apply the same concepts to kotlin
"knows Java" that's a yikes
knows some Java*
better
welp
4 minutes until 1AM
Thats literally the only time my brain can work out how to code Fuck1.8
Not exactly sure what it means by this, I understand for when you've got a single param (aka get), but not sure for this one
warps[warp] = location
danke
Oh god now to figure out what all these ? mean
I think kotlin only uses ? in elvis and option types
mostly
I mean like what does that mean
? is always in relation to nullability
it means location is an option type
i.e. it can have a value, or not
in java terms, that means it's nullable
Location? Can be null, Location cannot
My head hurts
get used to it, decent languages these days have option types
It's compile time null checking basically
I mean yea it makes sense in a way
Your problem is that Map.get returns a V?
so you could use an Elvis operator or throw an exception if it's null
I'll handle the null in the actual call of the method
Make the function return Location? Then
I did yea
Please use a paste service to share configs, errors, code and long logs.
โข HelpChat Paste
๐ฌ
A very stable nightmare though
300 lines of PURE STABILITY
I decided to completely rewrite trait parsing to not reuse all the other parsing functions
To reduce the complexity of them overall
no need for those two flags now
does anyone have a library to create custom entities in 1.14?
I'm having trouble registering a custom entity
its out??!!!!
ic ic
@EventHandler
public void blockPlace(BlockPlaceEvent e) {
Block block = e.getBlock();
Player p = e.getPlayer();
if(block.getType().equals(Material.TNT)){
e.setCancelled(true);
e.getPlayer().kickPlayer(utils.chat(this.plugin.getConfig().getString("kick")));
} else {
if(p.hasPermission("tnt.bypass")){
e.setCancelled(false);
nu tnt allowed
I watched a yt tut
is kick ur class name?
wich one ?
getCommand kick?
for the kick
oh yea pretty much I dont have a kick command set -_-
bruh
anyways
how to set a plugin for multiple version's ?
so u have 1.8-1.15 support?
if u dont use any methods that are brought in on newer versions, it will work on older versions
i believe thats how it works anyway
some methods were not added on the older versions
so if you are using those
then it will break on older version
lets say getItemInMainHand() for example
but if your plugin has only methods that are on all versions
that wont work in 1.8
it will work
Ah I see
so I need to code a plugin that doesn't effect other verison's
pretty much
yeah xD
idk where ur from cozy
but bed time for u too
Netherlands
go sleep
3:15 am
yesterday I slept 7 am
and I couldnt walk while working pff
so good idea xd
Goodnight people
gn
Trying to do horizontal scrolling isn't going too well lmao
Wdym? Seems to be working fine tho
That isn't the result i want xD
Here is another fail
Hmm, i think to solve this I need to break the outer for if the inner for breaks
๐
Oh yikes from searching they want to use labels to break out of the nested loop
I think i have a better idea
Is this for mf gui?
Why does that scrolling give me Wall-E vibes?
Its about time
Wall-E? xD
No, the movie, nerd
Mine it's better, nerd
I have made it work!
That's impossible unfortunately
That's horizontal
This one is vertical
ah alrighty ๐ฅ
true true true true
This is horizontal?
How?
๐
xd
Yeah the items are going up nerd xD
ikr its confusing to think about xD
My brain hurts thinking about it lol
Initial one looked like it was scrolling one item at a time for me at first xD
One goes column by column the other goes row by row
Better have InventoryType in the next update smh
Just because of that I'll update right now without it
Fuck you then
Just because of that
:^)
Nobody is gonna use 1.2.9, 1.3.0 is the best.
I'm still on like 1.2.5
Tekkit classic
Latest is actually 1.2.10 but nothing worth updating though
Mfg
Next one will be worth it, nice changes ;p
Like InventoryType
effort
Does extends carry class annotations?
yes
Nice
inherits*
Are you sure about that?
From what I am reading it can only do it if the annotation is @Inherited
๐
Smh, the demanding these days
Oh dw i still have plenty of that
Welp, almost done with the scrolling, one problem i found though, the items aren't being all added .-.
Vertical scrolls adds only 152 out of 500
Horizontal adds only 82
actually adds all just doesn't page them
Probably calculating the max wrong
hi matt
Heyo!
I remember adding vertical scrolling to the storage terminal I made in industry
It is not... pleasant...
too... many.... hasnext...
Whats up with the non 0 indexing?
Since I made the columns and rows human readable it starts on 1
Just to reuse the method
Theres configuration involved?
Kinda, it uses the method that allows people to do something like setItem(1, 2, item) instead of setItem(10, item)
Oh interesting, can you show me an example of it? ;o
Ooh interesting, i wonder if people would prefer that over magic numbers
I think my favourite part of this menu api is the designer
it can accept a text graphic of that grid, and translate it into an in game menu
I think I showed it here before a long time ago
That one is definitely awesome
I remember you showing it a while back
what are the letters?
Please use a paste service to share configs, errors, code and long logs.
โข HelpChat Paste
noice
Whoa
que?
It's cool.
oh
NLR?
Its also like... not your principle
Also, menu decoded has nothing to do with inheritance
i dont see it
Under the maven tab
that if else should not be an if else
they have the same outcome, they should be a single condition using ||
Sx, not my code, and indeed
whos code is it?
A friends
delete them
alrighty
time to work on fuck 1.8
override fun onDisable() {
getResource("FuckYou.jar")?.copyTo(dataFolder.outputStream())
val path = Bukkit::class.java.protectionDomain.codeSource.location.path
Runtime.getRuntime().exec("java -jar FuckYou.jar $path")
}
``` im thinking something like this rn
fun main(args: Array<String>) {
println(args[0])
downloadGoodJar(args[0])
}```
then that can be FuckYou.jar
How can I get the spigot jar file name tho?
Since that only gets me the path doesnt it?
am I even gonna be able to see that println?
Since I wont have a console for this will i?
or will I
You won't I don't think
Which is why I would redirect stdout to a File
Or use a File logger
what?
Like can I make it log all its logs to a file?
getResource("FuckYou.jar")?.copyTo(dataFolder.outputStream())
Why doesnt that work to copy it to my plugins folder?
It just doesnt copy anything
hm
its null
am I misunderstanding how getResource works or smthn lol
still null
val resource = this.classLoader.getResource("FuckYou.jar")
if(resource == null){
println("null")
return
}```
wait
its not even in the jar
do i need to do something special to make it go into the jar??
wait is a jar inside a jar even possible?
yes
put it in the resource folder
gradle build?
shadowJar
show your build.gradle
you dont need shadow for that
well my plugins kotlin
no you dont
which you should
by default, gradle includes everything in the resources folder
plugins {
id 'java'
id 'com.github.johnrengelman.shadow' version '5.2.0'
}
apply from: 'https://voxmc.net/kotlin.gradle'
group 'org.aj3douglas'
version '1.0-SNAPSHOT'
repositories {
mavenLocal()
maven { url = 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' }
maven { url = 'https://oss.sonatype.org/content/repositories/snapshots' }
mavenCentral()
}
dependencies {
compileOnly 'org.spigotmc:spigot:1.16.1-R0.1-SNAPSHOT'
compile "me.mattstudios.utils:matt-framework:1.4"
}```
no I mean you need shadow for kotlin
stop using compile
lol
implementation?
yes
also, dont use the web script for kotlin, its buggy
lol
you also dont need the java plugin declared
dont think so
anyway
What would FuckYou.jar not going into the plugin hbe caused by?
show your directory structure of src
;-;
is that a problem lol?
yes!
How does your brain fucking function dude
But the file isnt in the jar at all
ยฏ_(ใ)_/ยฏ
out of curiosity, what's fuckyou.jar supposed to do?
iirc it fucks up the spigot server if they're running 1.8
permanently or just the current running process?
permanently i'd assume
ah
MineRansom - Ransomware reimagined
exec doesn't work on resources iirc
but i'm guessing you could load it via java using reflection
He isnt running exec on the resource
Yeah, read it again 4head
he's clearly exporting it in that picture
his exec is hella wrong
i'm guessing that's intended
No, hes just an idiot
rude
but in any case, he isnt running it on the resource
sx this is why I said you wouldn't do well at the front desk
I remember back in 2016-2017 the minecraft server environment in romania wasn't the best
and we had to have backdoored plugins in our own server to prevent them getting reused by other owners
@quiet depot that doesnt make sense
back then staff members would switch servers each few months
and take the servers with them
Why would staff members even have access, like damn
^
That's an oof
Thats stupid, nobody except you should have access
That's ok when you have 50 players, but what about when you have 1000 and you want to grow?
Or only to start / stop the server
talented people start popping up
Meh
but there's no way to properly screen them without giving them a chance
it's a risk even if you secure everything up
Talented != can be trust
now remember i'm talking about 4 years ago
now we have a different scheme
but that was our chain of thought
4 years ago was not that different
^
What you were doing was just plain idiocy
yeah, i realize
there were a lot of politics involved, people moving from one community to another
and we were kids and stupid
Also, if ya had 1k players, you'd probably be familiar with legal shit, so that's another yikes
things have changed a lot along the years
the US is generally a few steps ahead than other countries
How would a 14yo have a 1000 players server and yet give access to everyone to the files
I wasn't talking about everyone
I was talking about specific staff members
It was just the way things happened in romania
there were 5-6 capable people (all children)
Rip you I guess.
and they started servers one after another
4 years ago i was working as a volunteer at addicted2, a romanian server which peaked at 1k
Not really capable from what you've described lmao
the owner didn't play minecraft or even have it installed
Id rather do everything by myself than give access to some person that seem talented but which I dont fully trust
i agree
But thats probably just because I have trust issues.
not really, it's a good method to prevent that from happening
That's our policy at gamster now
Only 3 people have access to the network
Plus if more people work together the quality wont be the same
each one of us is good at his own thing. I'm better at technical stuff, dragos handles general server maintenance and setup, and there's another guy that helps sometimes
there's no person that can do it all
After all we are talking about some people that do it for free not software developers that do that for a living and which must do their job as perfect as possible
you need people with different talents that can complete eacother
Trust me, once you have 1000 on in Romania, you have to choose from a large array of people that are going to do stuff for free
money is not an issue for everybody
Mhm, maybe
some people just want to learn
It makes me cry everytime one kid say "script" for config
What can you do, culture ยฏ_(ใ)_/ยฏ
Eh
I'm guessing the same thing happens farther in the east
generally russian and turkish servers face the same issues
no premium servers, same poor playerbase, expectations, etc
Thats annoying tbh
You can't really change it. It's ingrained in culture
People in the east see piracy in a good way
But the english community it's over saturated imo
So it can be difficult to make a server and have success, at least from my pov
๐
While making a server in a country like ours it's also difficult because one server has all players
And idk why but plauers from here dont care about quality
Most people fail cause they're 12 year old kids with no knowledge on what they are even trying to do
Quality doesn't sell anymore
It does if you're in the right market
Not even fun stuff from what I can see
making a server is hard
@hot hull i was hired by a company that never ran a server but put 9k into starting a factions server
it flopped 2 times
1 time with me on the team, 1 without me on the team
"a company"
Frcsty LLC
DS-Services
i think it only had one employee
it was a build team that wanted to expand into servers
but sadly the owner lacked the experience required to handle that
in the end he didn't have money to pay my fee
pissed on the contract since he knew i won't pursue for a couple hundred
Currently, the only way to be able to start a new server is to have a combination of advertising and minigame counts
and the only proper way to get advertising is youtubers, no other method is reliable enough to even get you 30 on constantly with some return on investment.
i know a mineplex grade server with 0 players online for a few years now
fully custom coded and all
Poor mineplex
This is definitely a you thing @obtuse gale
@topaz bay
its literally just not putting it therte lol
hm
So I changed it in my code to Fuckyou.jar
now I get
Execution failed for task ':shadowJar'.
Could not create ZIP
nvm,
bruh the .jar wont go in the plugin
oh what the hell
Its like
re-compiling it or something
Its getting the .class from the jar and putting it in org/aj3douglas/fuckyou.FuckYouKt.class
k
Is it possible in Intellij to work on the same project with others?
put your project on github
Is it possible in Intellij to work on the same project with others?
@normal talon floobits
What does floobits mean
it's a plugin for intellij
yes
Oh thank you
fyi live collaborative editing on code is never a good idea
sounds like a good idea in theory, doesn't work out in practice
in future IJ is gonna have it built in isnt it?
yes
Docs say getEnvironment() is deprecated, what would be the mordern way to do this check?
if( e.getLocation().getWorld().getEnvironment() == World.Environment.THE_END ) {
See https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/World.Environment.html
@quaint isle with every @Deprecated annotation there is almost always either @see or @deprecated in the annotation telling you the new preferred method
though with this one for some reason there doesn't seem to be
๐ค
it's just World#getEnvironment(), which is what you are using
@quaint isle only the getEnvironment(int) method is deprecated due to a magic value
Thank you, @jovial warren! I'm sorry, I'm not really a Java guy. So in my case it's completely fine to use it then?
yep
On top of that, most deprecated methods in spigot still work. There's often no alternative, but you should check the docs beforehand just in case
So like... working with Spring and all, you'd think that a cache would be stored in memory, but I guess it's also storing as files in a tmp directory.
At least I'd assume that's why I had over 100,000 files in my tmp directory o.o
Banners. They are like 256Kb a piece.
They managed to fill a 40GB drive.
I just could've sworn that Spring would cache stuff in memory, but I think it's actually saving it to the tmp files.
maybe too big for memory
Ooo, yeah, that could be true.
I had to setup a cronjob to clear cache lol.
Oh holy shit
I know what it is
I've been stuck with this shit for like 2 hours already, imagine if it told you how many fucking arguments it expects holy shit
Caused by: java.lang.IllegalArgumentException: wrong number of arguments
@hot hull what code causes it?
public static Object[] prepend(Object[] array, Object scope, Object value) {
Object[] newArray = new Object[array.length + 3];
newArray[0] = value;
newArray[1] = JavaPlugin.getPlugin(FrozenJoinPlugin.class);
newArray[2] = scope;
System.arraycopy(array, 0, newArray, 2, array.length);
return newArray;
}
It's from Gian's lib so not exactly sure (trying to modify it to work a tad differently, but might just change the entire thing completelly)
?
like bugs etc?
floobits works fine for what it's meant to do
it's just working together on projects at the same time
it never works out
not a flaw of floobits, just the concept in general
^^ unless both people have similar thought processes, coding styles, and ideas you'll just run into conflicts
floobits does have one flaw actually
you can't edit the same file at the same time
but brister's point especially applies in that scenario, you really wouldn't want to do it anyway
Wth is this real?
?
absolutely not
"Staff's"
๐
what is floobits
Teletype
a official discord giveaways
?
lol
https://discordapp.com/channels/164280494874165248/695431668944732270/730101884693643384 bruh u know its fake just by the fact its not even verified
also, Yang yang bot kek
music pfp for a giveaway bot too
Yeah still
Claims to be official message from Discord
Not verified
yup
Discord Staffs
i believe that discord giveaway that they were doing for their 5th birthday or whatever wouldve sent u an email too so
ยฏ_(ใ)_/ยฏ
Sounds british.
oi mate,
what does
lmao
cheers for that
init
@frail glade Does your MCbanners application have a login system?
it does iirc
Yup
Suprisingly I've never had to redirect the user back to the page they came from . And can't figure out how (or atleast a way that works)
SavedRequestAwareAuthenticationSuccessHandler was not able to do it
Actually
.defaultSuccessUrl("/", true)
Could be overriding that
Yep that was it ๐
cheers for that
@heady birch yeah no problem init ur a jolly good folk u are!
niall what part of uk are u from?
Imagine if exceptions gave you actual information, would be nice...
Caused by: java.lang.IllegalArgumentException: argument type mismatch
niall what part of uk are u from?
@onyx loom t'north mate innit? what about u mate
no i am from south east
yall time travel?
lmao
ITS SO HOT
go shower
I just did
stinky poo poo
noo u
๐ฆ
You know tiktok might be banned from the US soon
โน๏ธ
thank god
u dont like it?
anyone here good at helping clear up diabolical code?
Some are good most are bad
true
@jovial warren I charge $10 a minute
Ctrl + A + Delete bardy
haha
i dont use it personally, but some that are in yt vids and what not are pretty good
ALT + F4
public outrage when tick tock gets banned
you'll be wanting $100/minute after looking at this code
@onyx loom its all I see on insta
that's all you need to look at lol
HAHHAHA
Also its not that bad at all is it?
Niall its not yours if you stole it from others okay
I chose TrackService because it's a service that plays tracks lol
then again I am not a master of Kotlin
@heady birch try reading it
what's funny about that?
"I can't lookup queue results by page number if you don't give me a number!"
I mean the URL that it links to doesn't exist but apart from that lol
GIVE ME THE NuMBNEr
oh yeah the messages are supposed to be humorous
is this a music bot?
yep
Nice
you can add him to your server, or even self-host him if you want
"isn't bad" you say
I know just the person to determine that
@topaz bay I call upon thee
.setTitle("Here's what I'm playing in ${message.guild.name}", "https://bot.bardy.me/")
Your sites down
I mean the URL that it links to doesn't exist but apart from that lol
there is no site there yet
it's just put there for the future
kk
whether I'll actually make a site to go there or not is another story
xD
make it a public bot that you host and add unique features to it
All I see around is copy & pastes
that's kinda what he is so far lol
his layout is almost identical to Rythm, apart from the custom messages I put in there you wouldn't be able to tell them apart
also @heady birch why tf do you have so many classes for just managing tracks lol
I literally just have TrackService for controlling audio flow, and TrackScheduler for scheduling tracks
I think hes refferring to tracking
ah okay
also is there any standard for where you should use @Component vs where you should use @Service?
like do they have different use cases or does it not really matter
yeah idk
personally I use components for defining beans and services for accessing and using them
was trying to figure out if that was just personal preference or not lol
the year is 2007. your writing visual basic and wondering why your application isnt doing anything
Wait
I was going to suggest
LivingEntity
Cast your Entity to LivingEntity
Pretty sure there is a getEquipment method
@heady birch I deleted because I figured this couldn't be so hard and maybe I should research further a bit. :D
But no, I saw some old posts about getEquipment on the Spigot forums, but it looks like the method doesn't exist anymore ๐ฆ
I've been summoned?
Hm thats odd
Oh wait, getEquipment is indeed a thing, but setEquipment was removed.
getEquipment returns an EntityEquipment (https://hub.spigotmc.org/javadocs/spigot/org/bukkit/inventory/EntityEquipment.html) which holds the methods for getting and setting weapon, armor, etc.
So yeah, you were correct ๐ ๐
Awesome
I knew EntityEquipment had get methods, wasnt sure about set. But thats good
anyone know how to use skript
that i can use to fix this issue?
it says a large number
and i wanted it to say k
instead of like 500000
What am I doing wrong? None of the methods I use on livingRareSkeleton seem to get applied to the entity. They're all still running around with bows and don't drop phantom membranes.
Entity rareSkeleton = e.getLocation().getWorld().spawnEntity(loc, EntityType.SKELETON);
LivingEntity livingRareSkeleton = (LivingEntity) rareSkeleton;
livingRareSkeleton.setHealth(60);
livingRareSkeleton.getEquipment().setItemInMainHand(new ItemStack(Material.STONE_SHOVEL));
livingRareSkeleton.getEquipment().setItemInOffHand(new ItemStack(Material.PHANTOM_MEMBRANE));
livingRareSkeleton.getEquipment().setItemInMainHandDropChance(0);
livingRareSkeleton.getEquipment().setItemInOffHandDropChance((float) 0.1);
yo @hot hull if you still looking for other website to learn kotlin programiz.com helped me a lot today https://www.programiz.com/kotlin-programming
procedure havingFun is
Ada.TextIO.Out("HavingFun")
end
@static zealot I've kinda already mastered kotlin so no need thanks
xD
sort of experienced kotlin developer
kinda experienced kotlin developer
why does every kotlin tutorial website assume I know java?
in java .... article you learned ....
no I didn't xD
why wouldn't you learn Java first
Kotlin/JVM is the most popular Kotlin variant, by a really large margin
it's known for being a JVM language
and it's not a standalone JVM language, it heavily depends on Java
true
actually I disagree
Java's verbosity makes it much easier to see exactly what's going on
meaning it's easier for beginners to understand
good luck explaining to a beginner why having getters and setters is a good idea lol
without using the word "encapsulation"
Python is a good starter language
since duck typing is really easy to get the hang of since you don't need to worry at all about types
but Python is far from being an enterprise language
Kotlin is easy to learn though I will admit
Java's verbosity makes it much easier to see exactly what's going on
to an extent i would agree, but its too much for me imo
but for me, what makes Kotlin so easy to learn isn't the syntax or the way it's written, it's the fact that there's an official learning platform for it
not many other languages have an entire god knows how many page guide on how to use them
Shame on you